• 生成随机《c和指针笔记》让rand更随机一点


    本文是一篇关于生成随机的帖子

        在c语言中如果要获取1~10的随机数,那么可能大部分人的设法都是通过以下代码获取:

    rand()%10+1;

        (虽然rand生成的是一个伪随机数,但是这边姑且认为他是真随机的吧)

        但是生成1~10的概率真的是一样的吗?

        不是的,上面我们来分析以下。

        假如rand返回的最大值为105,那么使用上面那种方法获取的随机数那么生成1~6的概率要比生成7~10的概率要大,

        看出来了吗?因为如果rand函数返回值的范围为0~99,那么使用上面的方法生成1~10的概率是一样的,但是,

        现在rand返回值范围为0~105,如果rand返回100,则rand()%10+1的值为1,相当于1的概率要比其他数要大一点,

        依此类推,生成1~6的概率要大一点点。

        每日一道理
    当浮华给予我们过多欺骗,现实中的虚假几乎让我们忘却了真的存在,是真情唤回了迷离的心,是真情带给了我们最纯、最真的感觉,它流露的是美的誓言,渗透的是永恒执著的真爱。

        所以如果要使生成的数更随机一点,可以使用上面的代码:

    #include<stdlib.h>
    #include<stdio.h>
    
    int get_rand10( void ){
    	int value;
    	int max_rand = ( ( RAND_MAX + 1 ) / 10 ) * 10 -1;
    	srand( (unsigned int) time(NULL) );
    	do{
    		value = rand();
    	}while(value > max_rand);
    	return value % 10 + 1;
    }

        一般情况下不必使用上面的方法,但是须要生成的随机数的最大值越接近于RAND_MAX,则越要考虑使用上面的方法。

    文章结束给大家分享下程序员的一些笑话语录: 联想——对内高价,补贴对外倾销的伟大“民族”企业。

    --------------------------------- 原创文章 By
    随机和概率
    ---------------------------------

  • 相关阅读:
    javascript
    js中 filter()方法
    DOM 属性方法用法
    zabbix-4.0-如何监控windows服务和实战监控SQL SERVER数据
    路由交换-华为交换机查询MAC/ARP配置电脑地址实战
    杀毒软件-使用杀毒软件带的防火墙设置端口访问控制-保护终端安全
    windows-win10各版本升级密钥
    等保心得经验总结
    Emacs服务器模式以及emacsclient配置
    PyTorch自动微分基本原理
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3112907.html
Copyright © 2020-2023  润新知