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)

j0hnik 15.02.2018 14:56

Kirill_98,
var rnd =(a, b)=> Math.floor(('0.'+ new Date().getMilliseconds()) * (b - a)) + a;
console.log(rnd(10,20));

Nexus 15.02.2018 14:56

Цитата:

Сообщение от Kirill_98
да пожалуйста помогите, перерыл весь интернет уже голова как чугунка

Вам в раздел "работа", это далеко не тривиальная задача :)
Мне даже интересно взялся бы кто-нибудь действительно писать ГПСЧ.

Чтобы ваше задание выполнить, можно отправить запрос на сервер, который вернет случайное число.

j0hnik 15.02.2018 15:14

Kirill_98,
var rnd =(a, b)=> Math.floor(('0.'+ (new Date().getMilliseconds()+''.slice(1)) ) * (b - a)) + a;
console.log(rnd(0,100));

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

Kirill_98 15.02.2018 15:22

Цитата:

Сообщение от j0hnik (Сообщение 478224)
Kirill_98,
var rnd =(a, b)=> Math.floor(('0.'+ (new Date().getMilliseconds()+''.slice(1)) ) * (b - a)) + a;
console.log(rnd(0,100));

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

:lol: :lol: :lol: :lol:
я попробывал сделать вот так
function rand(){
                return (new Date()).getMilliseconds()/1000;
            };

			function getRandomCount(){
				var resultObject = document.getElementById('resultPlace');
				resultObject.innerHTML = "";
				for (var i = 0; i < 5; i++) {
					 var a = Number (document.getElementById('a').value);
					 var b = Number (document.getElementById('b').value);
					 var result = a + (b - a) * rand();
					 resultObject.innerHTML += "<br>Сгенерированное число: " + result;
				}
			}
		</script>

вопрос как сделать так чтобы выкидывал допустим 5 разных чисел, в моем коде он выдает одно и тоже число 5 раз

j0hnik 15.02.2018 15:36

var rnd =(a, b)=> {
	var n = 99999900;
	while(n--) n;
	return Math.floor(('0.'+ (new Date().getMilliseconds()+''.slice(1)) ) * (b - a)) + a;
};
console.log(rnd(0,100)+'--'+rnd(0,100)+'--'+rnd(0,100)+'--'+rnd(0,100)+'--'+rnd(0,100));


Nexus проблема решена

рони 15.02.2018 15:46

генератор случайных чисел без Math.random
 
Цитата:

Сообщение от Kirill_98
Нужен генератор случайных чисел без Math.random

Цитата:

Сообщение от Kirill_98
и еще один вопрос, как сделать так чтобы число генерировалось в заданном в ручную диапазоне например от 1 до 10?

где-то было ... искать иль снова написать вот чём вопрос? :lol:
<script>
function rund(b) {
    var a = (new Date).getMilliseconds();
    return function() {
        a = (25173 * a + 13849) % 65536;
        return a % b + 1
    }
};

var x =  rund(10);
for (var i=0; i< 1000; i++)  document.write(x()+",")
  </script>

Nexus 15.02.2018 15:48

Цитата:

Сообщение от j0hnik
Nexus проблема решена

:lol:

j0hnik 15.02.2018 15:59

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

j0hnik 15.02.2018 15:59

рони,
есть варианты генерировать без date?

Nexus 15.02.2018 16:02

var __rand_last_val, __rand_last_time;

function rand() {
    var res = (new Date()).getMilliseconds() / 1000;
    if (res == __rand_last_time)
        res = res * +('0.' + __rand_last_val.toString().substr(-2)) + __rand_last_val / 1000;
    else
        __rand_last_time = res;

    return __rand_last_val = res;
};

var i = 10,
    r = []
while (i--)
    r.push(rand());


console.log(r);


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