2011-10-27 10 views
8

To jest w Delphi (dokładnie 7). Jak mogę generować liczby losowe w określonym zakresie? Podobny do random.randint(1,6) w Pythonie. Próbuję symulować rzucanie kostkami. Druga opcja to jakoś wyłączyć 0.Losowe liczby w zakresie

Obecnie mam:

Randomize; 
Roll := Random(7); 
Label3.Caption := IntToStr(Roll); 
+5

To jest banalne, aby "jakoś" wykluczyć zero. Po prostu wykonaj 'Random (6) + 1'. –

Odpowiedz

22

Można użyć

RandomRange(1, 7) 

który zwróci losową liczbę całkowitą ze zbioru {1, 2, 3, 4, 5, 6}.

(uses Math)

[Nawiasem mówiąc, jest to trywialne 'jakoś' wykluczyć zero. Właśnie do Random(6) + 1]

+0

Dzięki, ale musi to być RandomRange (1,7), tak aby zawierał 6. – Aaron

+0

@Aaron: Tak, zmieniłem to kilka minut temu! –

2

Ponadto, możliwe jest wytworzenie się wartość z zakresu pływaka [a, b), b najtańsza.

r := random; 
x := (b-a)*r + a; 

Pierwsza linia generuje wartość od [0; 1) interwał; drugi daje wartość z [a, b).

Jeśli chcesz uzyskać N losowych wartości w przedziale [a; b] (na przykład, 5 przypadkowe wartości z przedziału [1, 2] {1, 1,25, 1,5, 1,75, 2}) jest następująca:

r := RandomRange(0, N-1); 
x := a + r*(b-a)/(N-1); 
+0

Powinien to być 'RandomRange (0, N)' –

1

do określonej wartości można użyć

randomize; 
ran:=random(6)+1; 

ta wartość będzie losowa od 1 do 6

Powiązane problemy