随机种子

random seed

1.python

随机选择&生成随机数

使用random模块
random模块是采用Mersenne Twister 梅森旋转算法来计算随机数,是一个确定性算法

import random

values=[1,2,3,4,5,6]
random.choice()   #随机挑选元素

random.choice(values)
>3

random.sample()  #随机挑选多个元素
random.sample(values,2)
[4,3]

random.shuffle()   # 洗牌函数

random.randint()  # 随机整数,需要参数
random.random() # 0-1之间均匀分布浮点数
random.uniform() # 计算均匀分布值
random.gauss()    #计算正态分布值

random.seed(1235) # 可以修改初始的种子值

2.C++

需要用到rand()函数和 srand()函数

  • 1.只产生一个随机数,不需要设定的范围

rand()会生成一个随机数,范围在0~RAND_MAX
RAND_MAX 定义在ctdlib中.RAND_MAX=2147483647 2^31

#include<cstdlib>
#include<iostream>
#include<ctime>       // include<time.h> in c language
using namespace std;
void Random()
{
    for(int i=0;i<10;i++)
       cout<<rand()<<endl;
}
  • 2.生成一个在一定范围的数
//最直接的输出
rand()%x          //x代表要输出数的范围
// 为了方便可以使用宏
#include<cstdlib>
#include<iostream>
#include<ctime>       // include<time.h> in c language
#define random(x)  (rand()%x)
using namespace std;
void Random()
{
    for(int i=0;i<10;i++)
       cout<<random(100)<<endl;
}
// 输出10个在0~100之间的数
  • 3.随机产生的数实习每次运行都是随机的

需要借助srand()函数

srand()用来设置rand()产生随机数的随机数种子

调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed), 如果未设随机数种子, rand()在调用时会自动设随机数种子为1

随机数种子都自动设成相同值1 ,进而导致rand()所产生的随机数值都一样

借助时间函数time(0)作为随机种子,实现输出结果不可预测

void srand( unsigned seed );   //函数定义类型

#include <cstdlib>
#include <iostream>
#include <ctime>
 
int main() 
{
    std::srand(std::time(0)); //use current time as seed for random generator  ,一般默认都是设置为time(0)
    int random_variable = std::rand();
    std::cout << "Random value on [0 " << RAND_MAX << "]: " 
              << random_variable << '
';
}
原文地址:https://www.cnblogs.com/GeekDanny/p/10214365.html