Случайные числа в диапазоне - PullRequest
8 голосов
/ 27 октября 2011

Это в Delphi (7, если быть точным). Как я могу генерировать случайные числа в определенном диапазоне? Похоже на random.randint(1,6) в Python. Я пытаюсь симулировать бросок костей. Другой вариант - как-то исключить 0.

В настоящее время у меня есть:

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

Ответы [ 3 ]

22 голосов
/ 27 октября 2011

Вы можете использовать

RandomRange(1, 7)

, который будет возвращать случайное целое число из набора {1, 2, 3, 4, 5, 6}.

(uses Math)

[Кстати, тривиально «как-то» исключить ноль.Просто сделай Random(6) + 1.]

2 голосов
/ 04 января 2013

Также возможно генерировать значение из диапазона с плавающей запятой [a, b), исключая b:

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

Первая строка генерирует значение из [0; 1) интервал; второй дает значение из [a, b).

Если вы хотите получить N случайных значений в интервале [a; b] (например, 5 случайных значений из интервала [1; 2]: {1, 1,25, 1,5, 1,75, 2}) используют следующее:

r := RandomRange(0, N-1);
x := a + r*(b-a)/(N-1);
1 голос
/ 30 октября 2013

до определенного значения, которое вы можете использовать

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

это значение будет рандомизировано от 1 до 6

...