[C++] Losowanie liter
Ostatnio zmodyfikowano 2014-10-19 16:24
Rashmistrz |
» 2014-10-19 11:32:18 Jednym z rozwiązań jest stworzenie tablicy ze znakami i korzystanie z nich. :F char znaki[ ] = { }; |
|
b0r0 Temat założony przez niniejszego użytkownika |
» 2014-10-19 13:49:22 1. oputyk - a niby o jakiej metodzie od samego początku cały czas tu pisze że mam z nią problemy?
2. Monika90 - wątpliwa sprawa że jest błąd w kodzie bo to pierwsza funkcja która się uruchamia i obecnie jedyna w momencie debugowania, z kodowaniem ascii mało prawdopodobne bo ten sam problem występuje na Bladzie do którego mam dostęp na uczelni. A robiąc zwykłe wypisanie pętlą wszystkich znaków (w innym programie) to normalnie wypisuje wszystko jak trzeba. Problem wydaje mi się ze leży w randzie.
3. Rashmistrz - i jak dobrze rozumiem rand odnieść do tej tablicy? |
|
Rashmistrz |
» 2014-10-19 14:03:17 Nie wiem co rozumiesz przez "odnieść". Ja połowy zapisu twojego kodu nie rozumiem, bo na razie nie jestem na takim poziomie programowania... Jednak mam takie pytanie, do czego służy Ci ta koniunkcja bitowa? =( rand() & 25 ) + 65; EDIT: [...]to że niema poszczególnych liter nie oznacza że kod jest zły to tylko przypadek[...] |
Też mam problem z rand(), bo ta funkcja pseudolosowa z połączeniu z czasem daje nierównomierne szanse na wylosowanie się różnych liczb. :/ |
|
b0r0 Temat założony przez niniejszego użytkownika |
» 2014-10-19 14:11:28 oto co miałem na myśli przez odniesienie się do tablicy z alfabetem: Struktura ** losowanie( int N ) { srand( time( NULL ) ); Struktura ** tab; char Li[ 27 ] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; tab = new Struktura *[ N ]; for( int i = 0; i < N; i++ ) { tab[ i ] = new Struktura; ( tab[ i ] )->b = Li[( rand() % 26 ) ]; ( tab[ i ] )->a =( rand() % 1000001 ); ( tab[ i ] )->c = 0; } return tab; }
Po co ta koniunkcja już tłumacze normalnie jak podasz to ta funkcja ci losuje liczby z zakresu od 0 do 4 a to +65 powoduje że przesuwasz się o tą wartość i w efekcie możesz losować liczby liczby z przedziału od 5 do 9 a co do faktu że to był przypadek z randem to aż w głowie mi się nie mieści ze na 20 kompilacji i 9 344 444 losowania w każdej kompilacji ani razu nie padały aż 4 litery |
|
pekfos |
» 2014-10-19 14:15:57 Po co ta koniunkcja już tłumacze
normalnie jak podasz to ta funkcja ci losuje liczby z zakresu od 0 do 4 | & to nie %. |
|
Rashmistrz |
» 2014-10-19 14:28:57 rand() & 5; Czyli: xxxx & 0101 Takie cuś zwróci nam tylko: 0000, 0001, 0100, 0101 Dziesiętnie 0,1,4,5 =( rand() & 5 ) + 5; Czyli: xxxx & 1010 A takie cuś zwróci nam tylko: 0000, 0010, 1000, 1010 Dziesiętnie: 0,2,8,10 Prawie czysty chaos... xD Wyszło by ci tak jak mówisz gdybyś użył modulo, zamiast koniunkcji bitowej. EDIT: a co do faktu że to był przypadek z randem to aż w głowie mi się nie mieści ze na 20 kompilacji i 9 344 444 losowania w każdej kompilacji ani razu nie padały aż 4 litery |
To już wiemy w czym problem. :D Nie mają prawa się wylosować przy tej koniunkcji bitowej... |
|
b0r0 Temat założony przez niniejszego użytkownika |
» 2014-10-19 16:24:48 Słów mi brak że nie zauważyłem tego & zamiast %, moja wina, moja wina, moja bardzo wielka wina.
Dzięki wszystkim za pomoc |
|
1 « 2 » |