Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2015-09-13, 16:03


misjane







Wiek: 29
Na forum: 5127 dni
Posty: 46



Respekt: 50

Witam, postanowi?em napisa? w?asny system lotto z losowaniem 6 liczb od 1 do 49.
Problem polega na tym ?e czasem losuje takie same liczby np. 5, 18, 32, 49, 18, 21.

Chcia?em to naprawi? za pomoc? if ( x = x) ale trzeba by ich zrobi? ze 30 czyli za?mieci? skrypt.

Je?li kto? ma pomys? jak to zrobi? najkr?cej to prosz? o pomoc.
Kod:

forward LosujNumerki(playerid);
public LosujNumerki(playerid)
{
WylosowanaLiczba[0] = random(48) +1;
WylosowanaLiczba[1] = random(48) +1;
WylosowanaLiczba[2] = random(48) +1;
WylosowanaLiczba[3] = random(48) +1;
WylosowanaLiczba[4] = random(48) +1;
WylosowanaLiczba[5] = random(48) +1;

format(str, sizeof(str), "›› |Lotto| {FFFFFF}Wylosowane liczby to: {FF0000}%d, %d, %d, %d, %d, %d{FFFFFF}.", WylosowanaLiczba[0],WylosowanaLiczba[1],WylosowanaLiczba[2],WylosowanaLiczba[3],WylosowanaLiczba[4],WylosowanaLiczba[5]);
SendClientMessageToAll(COLOR_CZAT_PISTACJA, str);

SprawdzWygrane(playerid);
return 1;
}

forward SprawdzWygrane(playerid);
public SprawdzWygrane(playerid)
{
Trafienia[playerid] = 0;
for(new n = 0; n < 6; n++)
{
if(Liczba[0][playerid] == WylosowanaLiczba[n])
{
Trafienia[playerid]++;
}
if(Liczba[1][playerid] == WylosowanaLiczba[n])
{
Trafienia[playerid]++;
}
if(Liczba[2][playerid] == WylosowanaLiczba[n])
{
Trafienia[playerid]++;
}
if(Liczba[3][playerid] == WylosowanaLiczba[n])
{
Trafienia[playerid]++;
}
if(Liczba[4][playerid] == WylosowanaLiczba[n])
{
Trafienia[playerid]++;
}
if(Liczba[5][playerid] == WylosowanaLiczba[n])
{
Trafienia[playerid]++;
}
}
DajNagrody(playerid);
return 1;
}


Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-09-13, 16:55


Combacior







Wiek: 29
Na forum: 5795 dni
Posty: 1516

Piwa: 2161

Respekt: 1060
Respekt: 1060

Ostrzeżeń: 20%
Kod:

#define MAX_CARGO_POINT 10

for(new randNumber, size = MAX_CARGO_POINT, v = random(size), liczby[MAX_CARGO_POINT] = {0, 1, 2, ...}; size; size--, liczby[v] = liczby[size], v = random(size))
{
randNumber = liczby[v]; //wylosowana liczba to randNumber
printf("%d", randNumber);
}


Funkcja printf w p?tli poka?e w konsoli w losowej kolejno?ci 10 liczb (0 - 9), za ilo?? losowa? odpowiada definicja, nie ma szans, ?e jaka? liczba si? powt?rzy. Jak to dzia?a t?umaczy? nie b?d?, bo nie jest ci to potrzebne do szcz??cia.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-09-14, 17:48


misjane







Wiek: 29
Na forum: 5127 dni
Posty: 46



Respekt: 50

Dzia?a ale nie tak jak chc? ;(
Losuje liczby pierwsze w przedziale od 0 do MAX_CARGO_POINT i jest ich tyle ile wpisane w MAX_CARGO_POINT czyli np. gdy jest 10 to wylosuje 10 liczb w przedziale 0 - 10 tylko ze nie po kolei.

Po 2. liczby[MAX_CARGO_POINT] = {0, 1, 2, ...}; jak ograniczy? to do 49 bo ... to nieskonczonosc czyli ile wpisze w MAX_CARGO_POINT do tylu b?dzie losowa?.

Robi?em jeszcze tak:
Kod:

WylosowanaLiczba[0] = random(48) +1 ;
WylosowanaLiczba[1] = random(48) +1 && WylosowanaLiczba[1] != WylosowanaLiczba[0];
WylosowanaLiczba[2] = random(48) +1 && WylosowanaLiczba[2] != WylosowanaLiczba[1];


Pierwsz? losowa?o dobrze a rzeszt? zawsze pokazywa?o 1.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-09-14, 18:26


Combacior







Wiek: 29
Na forum: 5795 dni
Posty: 1516

Piwa: 2161

Respekt: 1060
Respekt: 1060

Ostrzeżeń: 20%
"misjane" napisał/a:

wylosuje 10 liczb w przedziale 0 - 10 tylko ze nie po kolei.


No a jak chcia?e?, przecie? mia?o by? losowo, a nie po kolei.

"misjane" napisał/a:

jak ograniczy? to do 49


Potrafisz czyta??

"Combacior" napisał/a:

za ilo?? losowa? odpowiada definicja


"misjane" napisał/a:

ile wpisze w MAX_CARGO_POINT do tylu b?dzie losowa?.


:eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye:
:eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye: :eye:

Zapraszam do dzia?u szukam/oferuj?, bo widz?, ?e sobie nie radzisz. Nie zapomnij o dopisku "p?atne".

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-09-14, 18:54


misjane







Wiek: 29
Na forum: 5127 dni
Posty: 46



Respekt: 50

"Combacior" napisał/a:


No a jak chcia?e?, przecie? mia?o by? losowo, a nie po kolei.


Tak ale losuje tylko z liczb pierwszych czyli je?li w #define jest 10 to wylosuje 10 liczb od 0 do 10 (w tym jedna pomija) - ani razu nie by?o wy?szej wylosowanej ni? 10

"Combacior" napisał/a:


za ilo?? losowa? odpowiada definicja


Mia?em na my?li jak ograniczy? liczby kt?re s? losowane czyli je?li punkt 1 by prawid?owo losowa? to losowa? by od 0 do niesko?czono?ci bo s? 3kropki a chc? aby by?o od 1 do 49.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-09-14, 19:00


ToxiC.







Wiek: 28
Na forum: 5246 dni
Posty: 3792

Piwa: 8590

Respekt: 1143,8
Respekt: 1143,8

Nie ogarniam ale.. jak chcesz ?eby losowa?o od 0-49 to zmie?

#define MAX_CARGO_POINT 10

10 na 49, logiczne

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-09-14, 19:28


misjane







Wiek: 29
Na forum: 5127 dni
Posty: 46



Respekt: 50

No b?dzie do 49, ale wtedy te? wylosuje 49 liczb a nie 6 :D

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-09-14, 19:40


Combacior







Wiek: 29
Na forum: 5795 dni
Posty: 1516

Piwa: 2161

Respekt: 1060
Respekt: 1060

Ostrzeżeń: 20%
Cytat:

wylosuje 10 liczb od 0 do 10


Od 0 do 10 to jest 10 liczb? Chyba 11, nic nie jest pomijane, losowane jest tyle ile jest w definicji, ale od 0 do MAX_CARGO_POINT - 1

Co do twojego nierozwi?zywalnego problemu, dodaj sobie dodatkow? zmienn? do p?tli i dodawaj do niej 1, gotowego kodu nie podam, bo to ma by? pomoc, a nie gotowiec.

Kod:

for(new loopTime; loopTime != 6; loopTime++)
{
...
}


Czasami dw?ch p?tli nie r?b ... bo tak kto? napisa?.

Postaw piwo autorowi tego posta
 

 
Tagi: powtórzenia :: wylosowanych :: liczb.
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » PAWN » Powtórzenia wylosowanych liczb. Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku