2011-10-27 2 views
8

Questo è in Delphi (7 per l'esattezza). Come posso generare numeri casuali all'interno di un intervallo specifico? Simile a random.randint(1,6) in Python. Sto provando a simulare i dadi rotanti. L'altra opzione è di escludere in qualche modo 0.Numeri casuali in un intervallo

Attualmente ho:

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

È banale 'escludere in qualche modo' zero. Basta fare 'Casuale (6) + 1'. –

risposta

22

È possibile utilizzare

RandomRange(1, 7) 

che restituirà un numero intero casuale dal set {1, 2, 3, 4, 5, 6}.

(uses Math)

[A proposito, è banale per 'in qualche modo' escludere zero. Basta fare Random(6) + 1]

+0

Grazie, ma deve essere RandomRange (1,7) in modo che il 6 sia incluso. – Aaron

+0

@ Aaron: Sì, l'ho cambiato diversi minuti fa! –

2

Inoltre, è possibile generare un valore da un intervallo galleggiante [a b, b), esclusa la:.

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

La prima riga genera un valore da [0; 1) intervallo; il secondo dà un valore da [a, b).

Se si desidera ottenere N valori casuali nell'intervallo [a; b] (ad esempio, 5 valori casuali da intervallo [1; 2]: {1, 1.25, 1.5, 1.75, 2}) usa il seguente:

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

Dovrebbe essere 'RandomRange (0, N)' –

1

ad un valore specifico è possibile utilizzare

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

tale valore verrà randomizzato tra 1 e 6