Случайные числа не случайны …
Я хочу внести ясность, это не очередная статья о случайных числах.
Вот то, чего вы не найдете в этой статье: длинный трактат о случайных числах и их группировке (случайная последовательность), их свойствах и почему они жизненно важны для современного человека. Так о чем пойдет речь в этой статье?
Я рад, что тебе интересно; в этой статье мы поговорим о том, что невозможно получить последовательности случайных чисел с помощью традиционного компьютера и какие уловки мы можем использовать для моделирования последовательности случайных чисел.
Прежде чем мы углубимся в сложные детали, давайте зададим себе реальный фундаментальный вопрос о случайных числах и последовательностях случайных чисел. Почему они так важны для нас? Да, я знаю, я сказал, что не стал бы об этом говорить, но небольшое вступление необходимо, чтобы определить контекст, в котором мы движемся.
Возвращаясь к нашему вопросу (почему случайные числа и их последовательности так важны?), Ответов много, кто-то процитирует вам критерии шифрования, которые защищают ваши электронные письма, пароли, контакты кредитных карт. Кроме того, есть те, кто действительно понимает его значение; случайные числа важны, потому что они являются основой видеоигр. Случайные числа – основа всех видеоигр, и этого более чем достаточно для изучения их свойств.
Что ж, начнем с первой концепции, пожалуй, самой важной. На любом современном компьютере с использованием любого языка программирования (c / c ++, python, MatLab, чтобы назвать наиболее часто используемые для научных вычислений) последовательность случайных чисел генерируется алгоритмом.
Что такое алгоритм? Алгоритм – это набор инструкций, шагов или действий, которые необходимо выполнить для манипулирования входными данными с целью получения выходных данных . Эта последовательность шагов должна быть четко определена и не может дать случайный результат. Самая важная прерогатива алгоритма состоит в том, что при одном и том же вводе всегда генерируется один и тот же вывод. Следовательно, если для генерации последовательности случайных чисел мы используем алгоритм, и алгоритм не является случайным (один и тот же ввод генерирует один и тот же вывод ), ясно, что невозможно сгенерировать случайные числа с помощью обычного компьютера или языка программирования.
Содержание
- Как генерировать случайные числа на C
- Как сгенерировать отрицательные случайные числа в C ++
- Как генерировать случайные числа в Java
- Как сгенерировать случайные числа в Excel
- Как генерировать случайные числа онлайн
Как генерировать случайные числа на C
Самый простой способ сгенерировать случайные числа в C – использовать функцию C rand () . Она позволяет случайным образом сгенерировать число от 0 до константы RAND_MAX (значение, которое, согласно ANSI C, должно быть больше, чем или равно 32676). Чтобы получить значение от 0 до произвольного (исключенного) числа, просто используйте оператор %. Например, чтобы получить случайное число от 0 до 101, нам нужно использовать следующий код.
int cas = rand() % 101;
Однако перед вызовом этой функции необходимо «подготовить» программу к генерации псевдослучайного числа, которое изменяется каждый раз при запуске программного обеспечения: этот результат получается с помощью функции srand (присутствует в стандартной библиотеке C, stdlib.h ), который принимает в качестве аргумента «начальное число» для случайной генерации цифры. Чтобы минимизировать повторение значений, текущее время (которое можно получить с помощью функции time () библиотеки time.h ) можно использовать в качестве начального числа .
В свете этой новой потребности вот как трансформируется приведенный выше код.
#include <time.h>
#include <stdlib.h>
//определение функции
int numCas;
srand(time(NULL));
numCas = rand() % 101;
Если вы предпочитаете, вы также можете заставить C генерировать случайные числа от максимального до минимального значения, используя следующую функцию.
#include <time.h>
#include <stdlib.h>
int numCasuale(int, int);
int numCasuale(int min, int max){
srand(time(NULL));
return rand() % (max-min+1)+min;
}
Наконец, если вы хотите получить рабочую программу, которая позволяет получать случайные числа между двумя значениями, вы можете использовать следующий код.
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
int numCasuale(int, int);
int main(void){
int m1, m2, r;
printf("Введите начальное значение: ");
scanf("%d", &m1);
printf("Введите конечное значение: ");
scanf("%d", &m2);
r=numCasuale(m1, m2);
printf("Сгенерированное случайное число: %d", r);
return 0;
}
int numCasuale(int min, int max){
srand(time(NULL));
return rand() % (max-min+1)+min;
}
Как сгенерировать отрицательные случайные числа в C ++
Чтобы сгенерировать отрицательные случайные числа в C ++, вы можете «перенастроить» код, который уже был для C , поскольку используемые функции практически такие же. Очевидно, что для того, чтобы число было отрицательным, числа, которые будут использоваться в качестве крайних значений, сами должны быть отрицательными (например, -100 и 0, или -98 и -15 и т. Д.). Ниже я покажу вам пример полнофункциональной программы, написанной на C ++.
#include <ctime>
#include <iostream>
#include <cstdlib>
using namespace std;
int numCasuale(int, int);
int main(void){
int m1, m2, r;
cout << "Введите начальное отрицательное значение: ";
cin >> m1;
cout << "Введите конечное отрицательное значение: ";
cin >> m2;
r=numCasuale(m1, m2);
cout << "Сгенерированное случайное число: "<< r <<"\n";
return 0;
}
int numCasuale(int min, int max){
srand(time(NULL));
return rand() % (max-min+1)+min;
}
Как генерировать случайные числа в Java
Если вам интересно генерировать случайные числа в Java , знайте, что вы можете действовать как минимум двумя разными способами: используя метод Math.random () , полезный для генерации псевдослучайных чисел; или через класс java.util.Random , создав объект типа Random.
Math.random ()
Класс Java Math , к вашему сведению, содержит большое количество статических констант и методов для использования в математических функциях; среди них есть метод random () , который возвращает псевдослучайное число с плавающей запятой от 0,0 до 1,0 (исключая вторую крайность); поэтому само собой разумеется, что для получения псевдослучайного целого числа вы должны манипулировать им определенным образом, в зависимости от результата, который вы хотите получить.
int numCas = (int)(Math.random() * 101);
Расширяя обсуждение, вы также можете установить нижний предел, умножив значение, сгенерированное Math.random (), на разницу между верхним и нижним пределом, а затем добавив последнее. Если, например, вы хотите получить псевдослучайное число от 50 (включительно) до 251 (исключая), вам нужно будет использовать следующий код.
int numCas = (int) (Math.random() * (251-50) +50);
Для удобства вы можете создать метод numberCas, который, учитывая два целых числа, позволяет вам сгенерировать между ними псевдослучайное число, включая крайние значения.
public static int numeroCas (int minimo, int massimo) {
int min=minimo;
int max=massimo+1;
int numCas = (int) (Math.random() * (max-min)+min);
return numCas;
}
Наконец, вот пример рабочего класса.
import javax.swing.JFrame ;
import javax.swing.JOptionPane ; `
public class Calcoli {
public static int numeroCas (int minimo, int massimo) {
int min=minimo;
int max=massimo+1;
int numCas = (int) (Math.random() * (max-min)+min);
return numCas;
}
public static void main(String[] args) {
int min, max, numCas;
String s1, s2;
JFrame finestra = new JFrame("Различные расчеты");
s1=JOptionPane.showInputDialog("Введите минимальное значение");
min = Integer.parseInt(s1);
s2=JOptionPane.showInputDialog("Введите максимальное значение");
max = Integer.parseInt(s2);
numCas = numeroCas(min,max);
JOptionPane.showMessageDialog(finestra, "Случайное число между " + min + " e " + max + " è " + numCas);
System.exit(0);
}
`}
java.util.Random
Класс Random библиотеки java.util позволяет значительно упростить задачу : объекты этого типа предоставляют методы для извлечения случайных целых чисел с помощью метода nextInt () . Ниже я покажу вам типичное использование этого класса.
import java.util.Random;
// другой декларативный код
Random ra = new Random();
int numCas = ra.nextInt();
В этом случае будет сгенерировано псевдослучайное положительное или отрицательное целое число. Если, с другой стороны, вы хотите сгенерировать случайное положительное целое число от 0 (включительно) до максимального (исключительного) значения, вы можете передать последнее значение в качестве аргумента методу nextInt (). Таким образом, код станет
import java.util.Random;
// другой декларативный код
Random ra = new Random();
int max = 51; /*генерировать случайное число compreso tra 0 e 50 */
int numCas = ra.nextInt(max);
Вот пример рабочего класса.
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import java.util.Random;
public class Calcoli {
public static int numeroCas (int massimo) {
int max=massimo;
Random ra = new Random();
return ra.nextInt(max);
}
public static void main(String[] args) {
int max, numCas;
String s1;
JFrame finestra = new JFrame("Различные расчеты");
s1=JOptionPane.showInputDialog("Введите максимальное значение");
max = Integer.parseInt(s1);
numCas = numeroCas(max);
JOptionPane.showMessageDialog(finestra, "Случайное число от 0 до " + max + " является " + numCas);
System.exit(0);
}
}
Как сгенерировать случайные числа в Excel
Вы спрашиваете меня, как генерировать случайные числа в Excel ? Поверьте, это так просто! Фактически, существует очень специфическая функция, которая называется CASUALE()
, которая позволяет вам генерировать псевдослучайные числа от 0 до 1 (исключено). При должной осторожности можно заставить эту функцию возвращать случайное целое число.
В виде? Я вам сразу объясню. Сначала найдите ячейку, которая должна содержать случайное число, и введите в нее формулу =RAND()*100
, если вы хотите получить случайное число от 0 (включительно) до 100 (исключено) или =INT(RAND()*100)
если вы хотите отображать только целые числа.
Еще удобнее функция =RANDBETWEEN(min;max)
, которая позволяет получать случайные числа от минимального до максимального значения; оба параметра могут быть положительными или отрицательными. Например, введя формулу в интересующую =RANDBETWEEN(10;50)
вас ячейку , вы получите целое число от 10 до 50.
Ячейка, содержащая случайное число, будет автоматически обновляться при пересчете рабочего листа или при вводе формулы или данных в другую ячейку. Однако, чтобы выполнить пересчет вручную, нажмите клавишу F9 на клавиатуре (все ячейки, содержащие случайно сгенерированные значения, будут пересчитаны). Процедуру можно использовать во всех версиях Excel, включая мобильную и онлайн.
Как генерировать случайные числа онлайн
Вам срочно нужно получить одно или несколько случайных чисел, но у вас нет возможности, знания или возможности использовать одну из систем, которые я указал в этом руководстве? Не волнуйтесь, я думаю, у меня есть именно то, что вам подходит. На самом деле, есть некоторые веб-сайты, которые позволяют генерировать случайные числа в Интернете всего за несколько секунд, совершенно бесплатно и с использованием любого доступного браузера.
Одним из них, например, является randomes.top , который генерирует случайные и псевдослучайные числа.
Еще один приятный (и немедленный) способ получить случайные числа с помощью баузера – использовать генератор, включенный в Google : да, вы все правильно поняли, знаменитая поисковая система позволяет вам производить такие вычисления почти сразу!
На практике все, что вам нужно сделать, это подключиться к главной странице Google , ввести слово случайные числа в поле поиска и нажать кнопку на увеличительном стекле, чтобы запустить его. Через несколько секунд вы должны увидеть панель, содержащую по умолчанию случайное число от 1 до 10.
Если вы сочтете это целесообразным, вы можете изменить минимальное и максимальное значения, используя соответствующие поля, а затем сгенерировать новое число, нажав кнопку « Генерировать» .
Если вы хотите напрямую получить случайное число между двумя конкретными числами, выполните поиск в Google, используя в качестве ключа фразу случайное число между X и Y (например, случайное число от 0 до 50 ): результат гарантирован!