zoukankan      html  css  js  c++  java
  • 随机种子

    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 << '
    ';
    }
    
  • 相关阅读:
    Spring Cloud(4):断路器(Hystrix)
    Spring Cloud(3):配置服务(Config)
    Spring Cloud(2):服务发现(Eureka)
    Docker常用命令
    Spring Cloud(1):概览
    Spring Cloud(0):目录
    Spring Boot JDBC:加载DataSource过程的源码分析及yml中DataSource的配置
    Java集合(7):散列与散列码
    [Linux]RabbitMQ
    [Linux]查看硬件及操作系统信息
  • 原文地址:https://www.cnblogs.com/GeekDanny/p/10214365.html
Copyright © 2011-2022 走看看