После генерации случайного числа с помощью компьютерной программы все равно считается случайным числом, если выбранное число является частью или полным числом исходного числа. Но если оно было изменено, то математики не примут его как случайное число и могут назвать его необъективным числом. Но если вы разрабатываете программу для простой задачи, это не будет рассматривать. Но если вы разрабатываете программу для генерирования случайного числа для такого ценного предмета, как лотерея или азартная игра, то ваша программа будет отклонена руководством, если вы не рассмотрите приведенный выше случай.
Так что для таких людей вот мое предложение:
Генерация случайного числа с использованием Math.random()
. (Произнесите это n
)
Now for [0,10) ==> n*10 (i.e. one digit) and for[10,100) ==> n*100 (i.e. two digits) and so on. Here squire bracket indicates that boundary is inclusive and round bracket indicates boundary is exclusive.
Then remove the rest after the decimal point. (i.e. get floor) - using Math.floor(), this can be done.
Если вы знаете, как читать таблицу случайных чисел, чтобы выбрать случайное число, вы знаете, что описанный выше процесс (умножение на 1, 10, 100 и т. Д.) Не нарушает тот, который я упоминал в начале (потому что он меняет только место десятичной точки.)
Изучите следующий пример и разработайте его для своих нужд.
Если вам нужен образец [0,9], то пол n * 10 - это ваш ответ, а если нужно [0,99], пол n * 100 - ваш ответ и т. Д.
Теперь позвольте войти в вашу роль:
Вы задали номера среди определенного диапазона. (В этом случае вы смещены в этом диапазоне. - Если взять число из [1,6], бросив кубик, то вы смещаетесь в [1,6], но все же это случайное значение, если и только если умирание непредвзято .)
Так что рассмотрите ваш диапазон ==> [78, 247]
количество элементов диапазона = 247 - 78 + 1 = 170; (поскольку обе границы включительно.
/*Mthod 1:*/
var i = 78, j = 247, k = 170, a = [], b = [], c, d, e, f, l = 0;
for(; i <= j; i++){ a.push(i); }
while(l < 170){
c = Math.random()*100; c = Math.floor(c);
d = Math.random()*100; d = Math.floor(d);
b.push(a[c]); e = c + d;
if((b.length != k) && (e < k)){ b.push(a[e]); }
l = b.length;
}
console.log('Method 1:');
console.log(b);
/*Method 2:*/
var a, b, c, d = [], l = 0;
while(l < 170){
a = Math.random()*100; a = Math.floor(a);
b = Math.random()*100; b = Math.floor(b);
c = a + b;
if(c <= 247 || c >= 78){ d.push(c); }else{ d.push(a); }
l = d.length;
}
console.log('Method 2:');
console.log(d);
Примечание. В первом методе я сначала создал массив, в котором содержатся нужные вам числа, а затем случайно поместил их в другой массив.
Во втором методе генерируйте числа случайным образом и проверяйте, находятся ли они в нужном вам диапазоне. Затем поместите его в массив. Здесь я сгенерировал два случайных числа и использовал их общее количество, чтобы максимизировать скорость программы, сводя к минимуму частоту отказов при получении полезного числа. Однако добавление сгенерированных чисел также даст некоторую необъективность. Поэтому я бы порекомендовал мой первый метод для генерации случайных чисел в определенном диапазоне.
В обоих методах ваша консоль покажет результат. (Нажмите f12 в Chrome, чтобы открыть консоль)