Случайные числа и символы

Написать программу, которая генерирует в указанных пользователем границах

  • случайное целое число,
  • случайное вещественное число,
  • случайный символ.

Для каждого из трех случаев пользователь задает свои границы диапазона. Например, если надо получить случайный символ от 'a' до 'f', то вводятся эти символы. Программа должна вывести на экран любой символ алфавита от 'a' до 'f' включительно.

В языках программирования есть функции, генерирующие случайные (псевдослучайные) числа. В одних языках функция генерирует целое число, в других - вещественное, в Pascal, например, и то и другое.

Для того, чтобы получить число в заданных границах, надо вычислить длину диапазона, получить случайное число от 0 до значения длины диапазона, затем прибавить минимум, т.е. смещение от 0. Например, надо получить случайное число от 5 до 100. Длина диапазона равна 100-5=95. Генерируем число от 0 до 95, а затем прибавляем к нему 5. Если будет случайно получен 0, то добавив к нему 5, получим 5 (минимально возможное), если же будет случайно получено число 95, то наше число будет 100 (максимально возможное).

Получение случайного символа аналогично получению целого числа. Добавляется только перевод символов в числа (и наоборот) по таблице кодов символов.

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 <stdio.h>
#include <stdlib.h>
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 до значения длины диапазона.

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.

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.

Комментарий

Здравствуйте, скопировала ваш файл отладчик выдает ошибку в 4 строке.
Идентификатор time не определен.
Как справится с этой проблемой