Я уверен, что для этого есть функция. Я просто хочу составить список из 1000 номеров, каждый из которых должен быть случайным.Как создать список 1000 случайных чисел в Erlang?
ответ
Чтобы создать список, состоящий из 1000-элементов со случайными числами от 1 до 10:
[rand:uniform(10) || _ <- lists:seq(1, 1000)].
Изменение 10 и 1000 к соответствующим номерам. Если вы опустите 10 из rand:uniform
, вы получите случайное число с плавающей запятой между 0.0 и 1.0.
В вариантах Erlang ниже 18.0: Используйте вместо этого модуль random
. Внимание! Перед использованием этого процесса необходимо запустить random:seed/3
, чтобы избежать получения одинаковых псевдослучайных чисел.
Удостоверьтесь в правильном посеве.
> F = fun() -> io:format("~p~n", [[random:uniform(10) || _ <- lists:seq(1, 10)]]) end.
> spawn(F).
[1,5,8,10,6,4,6,10,7,5]
> spawn(F).
[1,5,8,10,6,4,6,10,7,5]
Ваша интуиция заключается в том, что результаты будут разными. Случайное семя в Эрланге зависит от процесса. Исправлено семя по умолчанию. Вот почему вы получаете тот же результат, хотя в примере есть два процесса.
> G = fun() -> {A1,A2,A3} = now(),
random:seed(A1, A2, A3),
io:format("~p~n", [[random:uniform(10) || _ <- lists:seq(1, 10)]])
end.
> spawn(G).
[3,1,10,7,9,4,9,2,8,3]
> spawn(G).
[9,1,4,7,8,8,8,3,5,6]
Обратите внимание, что если возвращаемое значение now()
одинакова в двух различных процессов, вы в конечном итоге с той же проблемой, что и выше. Вот почему некоторые люди любят использовать gen_server
для обертывания случайных чисел. В качестве альтернативы вы можете использовать лучшие семена.
'now()' гарантированно никогда не даст тот же результат дважды в одном и том же узле. –
Существуют еще более сильные генераторы случайных чисел в модуле 'crypto' (см. [Http://www.erlang.org/doc/man/crypto.html](http://www.erlang.org/doc/man/ crypto.html)) – Tilman
Я буду более счастлив получить также сайт, на котором я буду в состоянии его прочитать. Благодарю.
Вы должны ознакомиться с Learn You Some Erlang, который проведет вас через этот язык.
Генератор псевдослучайных чисел из криптографического модуля работает лучше crypto:rand_uniform(From, To)
. не
Чтобы создать список 1000-элемент со случайными числами от 1 до 10:
crypto:start(),
[crypto:rand_uniform(1, 10) || _ <- lists:seq(1, 1000)].
От Эрланга Центральной вики:
http://erlangcentral.org/wiki/index.php?title=Random_Numbers
где N = нет элементов, StartVal = минимальное значение и Lim = максимальное значение
generate_random_int_list(N,StartVal,Lim) ->
lists:map(fun (_) -> random:uniform(Lim-StartVal) + StartVal end, lists:seq(1,N)).
- 1. Как создать список случайных чисел?
- 2. Создать список случайных чисел
- 3. Список случайных чисел - arc4random
- 4. Как создать список уникальных случайных чисел?
- 5. Как создать список случайных чисел без дубликатов?
- 6. Как создать 1000 случайных чисел от 0 до 9?
- 7. Как создать массив случайных чисел?
- 8. Создать список случайных чисел без повторения
- 9. Как сделать список случайных чисел
- 10. Список случайных чисел
- 11. Как сгенерировать список случайных чисел?
- 12. Как создать сумму случайных чисел?
- 13. Как создать гистограмму случайных чисел?
- 14. Как создать беспорядочно отсортированный список случайных чисел в Haskell
- 15. Как создать список чисел 1-1000 для упрощения?
- 16. Генерация суммы случайных чисел до 1000 как гауссовского графика
- 17. Создайте 1000 случайных 10-значных чисел, используя javascript в цикле
- 18. Список случайных чисел только с двумя номерами
- 19. Как сгенерировать список случайных чисел в Haskell
- 20. Создать список из 100 случайных целых чисел, возвращаемое максимальное значение
- 21. Как создать список случайных чисел int без повторения?
- 22. Как создать группу случайных чисел в C
- 23. Генерация список случайных чисел в Java
- 24. Создайте список уникальных случайных чисел
- 25. Как сделать массив из 1000 случайных чисел между 1-100
- 26. F # Список случайных чисел сцепляются
- 27. генерации случайных чисел в Java с кратному 1000 число появляются
- 28. Как создать список случайных объектов?
- 29. Как сгенерировать список восходящих случайных целых чисел
- 30. Генератор случайных чисел между 0 - 1000 в C#
Это хорошая идея: случайное: seed (now()). до этого – fycth
Вы не ** ** получите «истинные случайные числа» из генератора псевдослучайных чисел, засеянных текущим временем. Они не будут криптографически безопасными. Вы имеете в виду, что каждый процесс должен использовать свое собственное семя, поэтому они не получают одинаковые псевдослучайные числа. –
@FilipHaglund Спасибо, исправлено. –