Javascript-форум (https://javascript.ru/forum/)
-   Учебные материалы (https://javascript.ru/forum/study/)
-   -   Нужен генератор случайных чисел без Math.random (https://javascript.ru/forum/study/72660-nuzhen-generator-sluchajjnykh-chisel-bez-math-random.html)

рони 15.02.2018 16:06

Цитата:

Сообщение от j0hnik
Рони, прокомментируй
a = (25173 * a + 13849) % 65536;

Линейный конгруэнтный метод

j0hnik 15.02.2018 16:18

в голову приходит только генерировать используя различные таймкоды,
время выполнения определенных частей кода, время ответа сервера, время общения с какому либо адресу и ответ сервера... в общем все связано со временем.

j0hnik 15.02.2018 16:25

https://www.youtube.com/watch?v=eRFgIh-raT8

Коллеги на погоде надо генерировать!

Kirill_98 15.02.2018 18:33

Цитата:

Сообщение от j0hnik (Сообщение 478242)
https://www.youtube.com/watch?v=eRFgIh-raT8

Коллеги на погоде надо генерировать!

это я своему преподу дам пусть посмотрит :) :) :) :) :) :) :) :)

j0hnik 15.02.2018 23:52

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>
<body>
	min	<input type="number" min="0" max="999999" value="0" id="inp1"><br>
	max <input type="number" min="0" max="999999" value="10" id="inp2"><br>
	чисел <input type="number" min="0" max="100" value="1" id="inp3"><br>
	<button>Кнопка</button>
	<div id="text"></div>
	<script>
		$('button').click(function(){
			var data = {
				'jsonrpc': '2.0',
				'method': 'generateIntegers',
				'params': {
					'apiKey': '00000000-0000-0000-0000-000000000000',
					'n': inp3.value,
					'min': inp1.value,
					'max': inp2.value,
					'replacement': true,
					'base': 10
				},
				'id': 2601
			};

			$.ajax({
				url: 'https://api.random.org/json-rpc/1/invoke',
				type: "POST",
				data: JSON.stringify(data),
				contentType: "application/json; charset=utf-8",
				dataType: "json",
				success: function(result) {
					$('#text').html(result.result.random.data.toString());
				}
			});
		});

	</script>
</body>
</html>


вот трушный рандом, сгенерированный на основе атмосферного шума! преподу привет.

Aetae 16.02.2018 01:19

function getRandom(a, b){
  var r = window.crypto.getRandomValues(new Uint32Array(1))/0xffffffff;
  var x = a+(b-a)*r;
  return x
}

Вот вам без Math.random().:)

Но если не использовать никаких API, а лишь чистый javascript - то и получить соответственно можно лишь псевдослучайные числа. А псвевдослучайные и случайные - две большие разницы.
Алгоритмов же для псевдослучайных чисел навалом, гуглите да копипастите. При всех алгоритмических хитростях принцип и результат един.

Kirill_98 16.02.2018 12:03

Всем коллегам привет, препод сказал еще один способ получения СЧ, подстановка чисел и что они там как то меняться должны я чет вообще не догнал может кто сталкивался ?

рони 16.02.2018 12:28

Цитата:

Сообщение от Kirill_98
подстановка чисел

недостаточно информации

Белый шум 16.02.2018 12:58

Похоже, что это нетотспособ-сенсэй - такие дают задание, а после правильного решения говорят что ты решил его не тем способом и ставят два (хотя в задании ничего не сказано про способ).

Вспоминай что было на парах, никак иначе не понять чего он хочет.

Kirill_98 16.02.2018 13:23

прикол в том что он не преподавал


Часовой пояс GMT +3, время: 10:04.