В языках программирования есть функции, генерирующие случайные (псевдослучайные) числа. В одних языках функция генерирует целое число, в других — вещественное, в Pascal, например, и то и другое.
Для того, чтобы получить число в заданных границах, надо вычислить длину диапазона, получить случайное число от 0 до значения длины диапазона, затем прибавить минимум, т.е. смещение от 0. Например, надо получить случайное число от 5 до 100. Длина диапазона равна 100-5=95. Генерируем число от 0 до 95, а затем прибавляем к нему 5. Если будет случайно получен 0, то добавив к нему 5, получим 5 (минимально возможное), если же будет случайно получено число 95, то наше число будет 100 (максимально возможное).
Получение случайного символа аналогично получению целого числа. Добавляется только перевод символов в числа (и наоборот) по таблице кодов символов.
Pascal
паскаль случайное число
var
min_i, max_i, n_i: integer;
min_f, max_f, n_f: real;
first_c, last_c: char;
min_c, max_c, n_c: byte;
begin
randomize;
write('Minimum integer: ');
readln(min_i);
write('Maximum integer: ');
readln(max_i);
n_i := random(max_i-min_i+1) + min_i;
writeln(n_i);
write('Minimum float: ');
readln(min_f);
write('Maximum float: ');
readln(max_f);
n_f := random() * (max_f-min_f) + min_f;
writeln(n_f:5:2);
write('First char: ');
readln(first_c);
write('Last char: ');
readln(last_c);
min_c := ord(first_c);
max_c := ord(last_c);
n_c := random(max_c-min_c+1) + min_c;
writeln(chr(n_c));
end.
Minimum integer: -10
Maximum integer: 10
3
Minimum float: 0.5
Maximum float: 1.25
0.70
First char: a
Last char: f
f
Функция random() генерирует целое число, если ей передать параметр-целое. Например, random(10) сгенерирует случайное число от 0 до 9 включительно.
Без параметров random() возвращает вещественное число от 0 до 1.
Команда randomize необходима для того, чтобы при каждом запуске программы генерировались разные случайные числа.
Язык Си
#include
#include
main() {
srand(time(NULL));
int n,min,max;
scanf("%d%d", &min, &max);
n = rand() % (max-min + 1) + min;
printf("%d\n", n);
float nf,minf,maxf;
scanf("%f%f%*c", &minf, &maxf);
nf = (float) rand() / RAND_MAX * (maxf - minf) + minf;
printf("%.3f\n", nf);
char nc,minc,maxc;
scanf("%c%*c", &minc);
scanf("%c%*c", &maxc);
nc = rand() % (maxc-minc + 1) + minc;
printf("%c\n", nc);
}
-10
10
0
0.5
1.25
0.618
a
f
a
Функция rand() генерирует целое число от 0 до значения константы, содержащейся в одном из заголовочных файлов.
Находят остаток от деления сгенерированного числа на длину диапазона. Получается число от 0 до значения длины диапазона.
Python
python случайное число
from random import random
m1 = int(input())
m2 = int(input())
n = int(random() * (m2-m1+1)) + m1
print(n)
m1 = float(input())
m2 = float(input())
n = random() * (m2-m1) + m1
print(round(n,3))
m1 = ord(input())
m2 = ord(input())
n = int(random() * (m2-m1+1)) + m1
print(chr(n))
-10
10
-2
0.5
1.25
0.904
a
f
e
КуМир
алг случайное
нач
цел m1, m2, n
ввод m1, m2
n := int(rnd(m2-m1+1))+m1
вывод n, нс
вещ m1f, m2f, nf
ввод m1f, m2f
nf := rnd(m2f-m1f)+m1f
вывод nf, нс
сим m1c, m2c
ввод m1c, m2c
m1 := юникод(m1c)
m2 := юникод(m2c)
n := int(rnd(m2-m1+1))+m1
вывод символ2(n), нс
кон
-10 10
-5
0.5 1.25
0.998909
a f
a
Функция rnd() генерирует случайное вещественное число от 0 до переданного ей значения.
В КуМире можно преобразовывать символы в коды и наоборот по двум таблицам: Юникод и КОИ-8.
Basic-256
input min
input max
n = int(rand() * (max-min+1)) + min
print n
input min
input max
n = rand() * (max-min) + min
print n
input min$
input max$
min = asc(min$)
max = asc(max$)
n = int(rand() * (max-min+1)) + min
print chr(n)
-10
10
4
0.5
1.25
0.882108
a
f
d
Функция rand() генерирует случайное вещественное число от 0 до 1.
import random
def symbol_random(mi, mx):
mi = ord(mi[0])
mx = ord(mx[0])# [0] — защита от дурака
return chr(random.randint(mi, mx))
# с числовыми значениями изобретать велосипед не буду