Dmitrievna Lvovich
?>

Мне нужно ответить на вопросы ! только вопросы: 1)как можно получить случайное число из интервала (0, x)? 2)как можно получить случайное число из интервала (0, x]? 3)как можно получить случайное число из интервала (n, х + n)? само : исследуйте работу функции random, запустив многократно на выполнение программу: program n_8; var х, n: integer; begin writeln ('исследование функции random'); randomize (*для генерации различных случайных чисел при каждом запуске программы *); write ('введите х»'); readln (х) ; write ('введите n»'); readln (п) ; writeln ('random(', х, ')=', random(х) ) ; writeln ('random(', х, ')+', n, '=', random(x)+n) end. как можно получить случайное число из интервала (0, x)? как можно получить случайное число из интервала (0, x]? как можно получить случайное число из интервала (n, х + n)?

Информатика

Ответы

sleek73
Random(min-max+1)+min 
где min -минимальное число,
max- максимальное
gbnn90
1. random (x)
2. random (x+1)
3. random (x)+n

Процедура Randomize в паскаль используется для включения генератора случайных чисел, а функция Random в Pascal определяет диапазон случайных чисел.

random (x) - случайные числа в диапазоне от 0 до x (не включая число x)
random (x+1) - случайные числа в диапазоне от 0 до x (включая число x)

случайное число из интервала (n, х + n)
если x>0 и n>0, то
max = x + n 
min = n
random (max - min) + min = random (x + n - n) + n = random (x) + n
если x>0 и n<0, то
max = x + ( - n ) = x - n
min = - n
random (max - min) + min = random (x - n - (- n)) + (- n) = random (x - n + n) - n = random (x) - n
mishagoride885
                                     PascalABC.NET                                       function ToBinary (x:integer):string; beginif (x>0) then ToBinary := ToBinary(x div 2) + (x mod 2).ToString;end; function FromBinary (x:string):integer; beginif (x.Length>0) then FromBinary := FromBinary(x.Substring(1)) + x[1].ToDigit*Round(Power(2,x.Length-1));end; function func (x:integer):integer; beginvar s := ToBinary(x); loop 2 do s += s.AsEnumerable.Sum(c->c.ToDigit) mod 2; func:=FromBinary(s);end; begin Println('f(N):',func(ReadInteger('N:'))); Println('Количество:',(1..160).Count(x->func(x) in 90..160)); end.

Примечание:

Если к числу в двоичной системе счисления приписывать в конец цифры, то число увеличивается и никак не может уменьшится. Поэтому, n<f(n). Следовательно, перебор различных чисел, принадлежащих отрезку [90;160], можно смело ставить до 160 (можно и меньше, но лень расписывать вычисления).

ToBinary - функция перевода числа из десятичной СС в двоичную. Можно писать любой алгоритм, необязательно в точности использовать мой.

FromBinary - функция перевода числа из двоичной СС в десятичную. Можно писать любой алгоритм, необязательно в точности использовать мой.

func - функция, которая выполняет преобразования числа согласно условию (пункты 1, 2, 3, 4).

Код кажется большим только из-за процедур и begin/endов. Без них - всего то 7 строчек :). В скринах можно проверить, действительно ли 19 (40-22+1).

Пример работы:


Автомат обрабатывает натуральное число N по следующему алгоритму: 1. Строится двоичная запись числа
Автомат обрабатывает натуральное число N по следующему алгоритму: 1. Строится двоичная запись числа
Автомат обрабатывает натуральное число N по следующему алгоритму: 1. Строится двоичная запись числа
Мария
                                     PascalABC.NET                                       function ToBinary (x:integer):string; beginif (x>0) then ToBinary := ToBinary(x div 2) + (x mod 2).ToString;end; function FromBinary (x:string):integer; beginif (x.Length>0) then FromBinary := FromBinary(x.Substring(1)) + x[1].ToDigit*Round(Power(2,x.Length-1));end; function func (x:integer):integer; beginvar s := ToBinary(x); loop 2 do s += s.AsEnumerable.Sum(c->c.ToDigit) mod 2; func:=FromBinary(s);end; begin Println('f(N):',func(ReadInteger('N:'))); Println('Количество:',(1..160).Count(x->func(x) in 90..160)); end.

Примечание:

Если к числу в двоичной системе счисления приписывать в конец цифры, то число увеличивается и никак не может уменьшится. Поэтому, n<f(n). Следовательно, перебор различных чисел, принадлежащих отрезку [90;160], можно смело ставить до 160 (можно и меньше, но лень расписывать вычисления).

ToBinary - функция перевода числа из десятичной СС в двоичную. Можно писать любой алгоритм, необязательно в точности использовать мой.

FromBinary - функция перевода числа из двоичной СС в десятичную. Можно писать любой алгоритм, необязательно в точности использовать мой.

func - функция, которая выполняет преобразования числа согласно условию (пункты 1, 2, 3, 4).

Код кажется большим только из-за процедур и begin/endов. Без них - всего то 7 строчек :). В скринах можно проверить, действительно ли 19 (40-22+1).

Пример работы:


Автомат обрабатывает натуральное число N по следующему алгоритму: 1. Строится двоичная запись числа
Автомат обрабатывает натуральное число N по следующему алгоритму: 1. Строится двоичная запись числа
Автомат обрабатывает натуральное число N по следующему алгоритму: 1. Строится двоичная запись числа

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Мне нужно ответить на вопросы ! только вопросы: 1)как можно получить случайное число из интервала (0, x)? 2)как можно получить случайное число из интервала (0, x]? 3)как можно получить случайное число из интервала (n, х + n)? само : исследуйте работу функции random, запустив многократно на выполнение программу: program n_8; var х, n: integer; begin writeln ('исследование функции random'); randomize (*для генерации различных случайных чисел при каждом запуске программы *); write ('введите х»'); readln (х) ; write ('введите n»'); readln (п) ; writeln ('random(', х, ')=', random(х) ) ; writeln ('random(', х, ')+', n, '=', random(x)+n) end. как можно получить случайное число из интервала (0, x)? как можно получить случайное число из интервала (0, x]? как можно получить случайное число из интервала (n, х + n)?
Ваше имя (никнейм)*
Email*
Комментарий*