Talk is cheap, show me the code.

random_demo.py代码如下:

# coding: utf-8
import randomdef random_index(rate):"""随机变量的概率函数"""## 参数rate为list<int># 返回概率事件的下标索引start = 0index = 0randnum = random.randint(1, sum(rate))for index, scope in enumerate(rate):start += scopeif randnum <= start:breakreturn indexdef main():arr = ['red', 'green', 'blue']rate = [45, 30, 25]red_times = 0green_times = 0blue_times = 0for i in xrange(10000):if arr[random_index(rate)] == 'red':red_times += 1if arr[random_index(rate)] == 'green':green_times += 1if arr[random_index(rate)] == 'blue':blue_times += 1print red_times, green_times, blue_timesif __name__ == '__main__':main()

打印结果:

$ python random_demo.py
4507 3009 2537
$ python random_demo.py
4586 3055 2485
$ python random_demo.py
4483 2996 2506
$ python random_demo.py
4586 3015 2480
$ python random_demo.py
4513 3057 2415
$ python random_demo.py
4494 3014 2456
$ python random_demo.py
4502 2978 2505
$ python random_demo.py
4475 3041 2528
$ python random_demo.py
4561 3043 2520
$ python random_demo.py
4558 2923 2474
$ python random_demo.py
4536 2957 2535
$ python random_demo.py
4526 2985 2576
$ python random_demo.py
4532 2936 2547
$ python random_demo.py
4420 2908 2447

温馨提示:以上代码示例代码使用的是Python2.7, 且考虑不严谨, 已替换为以下python3示例代码, 保证3种概率事件次数加起来等于总次数:

import randomdef random_index(rate):"""随机变量的概率函数"""## 参数rate为list<int># 返回概率事件的下标索引start = 0index = 0randnum = random.randint(1, sum(rate))for index, scope in enumerate(rate):start += scopeif randnum <= start:breakreturn indexdef main():arr = ['red', 'green', 'blue']rate = [45, 30, 25]red_times = 0green_times = 0blue_times = 0count = 0for i in range(10000):count += 1index = random_index(rate)if arr[index] == 'red':red_times += 1elif arr[index] == 'green':green_times += 1elif arr[index] == 'blue':blue_times += 1print(count, red_times, green_times, blue_times)if __name__ == '__main__':main()

可以看到结果, 抽中红绿蓝的次数非常接近它们的概率比例45:30:25, 其中random_index(rate)函数为核心代码.

OK, Enjoy it~

python按概率生成随机数相关推荐

  1. Python 里面如何生成随机数?

    在 Python 中用于生成随机数的模块是 random,在使用前需要 import. 如下例子可以酌情列举: random.random():生成一个 0-1 之间的随机浮点数: random.un ...

  2. 通过随机数生成兑换码和概率生成随机数

    以下的方法是可以用来生成兑换码,以及按概率处理生成随机数的方法 首先是按概率生成随机数的方法,假设奖品有30000分,20000分,10000分,3000分,2000分 function get_ra ...

  3. Java:实现 按概率生成随机数算法(附完整源码)

    Java:实现 按概率生成随机数算法 /*** 从一组数据按照概率分布随机取出一个*/public static int getRandomNum(List<ModelNum> nums) ...

  4. 随机数及按照概率生成随机数

    实例一简单生成随机数: #include <iostream> #include <cstdlib> using namespace std;int Random(double ...

  5. Python:列表推导生成随机数矩阵(高教社,《Python编程基础及应用》习题4-10) (10分)---生成一个m行n列的元素值不大于20的随机数矩阵(二维列表)

    前言 PTA程序设计类教学平台-def函数 运行环境Python3.6 小白进阶之路的学习与记录之------列表 题目: 编写一个Python函数,生成一个m行n列的元素值不大于20的随机数矩阵(二 ...

  6. python标准库生成随机数_Python3标准库:random伪随机数生成器

    1. random伪随机数生成器 random模块基于Mersenne Twister算法提供了一个快速伪随机数生成器.原来开发这个生成器是为了向蒙特卡洛模拟生成输入,Mersenne Twister ...

  7. python中用于生成随机数的函数的简单总结

    在python中有一个模块叫random,可以提供随机函数,方便生成随机元素或者表数据,对于工作的效率提升有大的帮助. 函数①random.random(): 解释:用于生成0-1之间的随机浮点数. ...

  8. java 按照概率生成随机数_JAVA 根据设置的概率生成随机数的方法

    import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; i ...

  9. python 调用matlab 生成随机数,不随机。matlab随机数不变,随机一直是一个数。 randperm函数随机失败

    问题:函数 randperm() 一直随机出来的数据是个常量.只能随机一次,然后一直输出一个数据 有时候代码,太多,不知道问题出在哪里,可以print()下,用二分法,一步步判断问题出在哪个地方,或者 ...

最新文章

  1. dbeaver 数据转化 mapping_Python机器学习实例:数据竞赛-足球运动员身价估计
  2. 清华美女学霸数学笔记曝光, 精美程度无与伦比
  3. 带你彻底明白 Android Studio 打包混淆
  4. Response JSON数据返回
  5. orale如果是整数后面补小数点0_Win10完美整数大小磁盘分区
  6. paip.验证码识别---初始化
  7. 最新版Ontrack EasyRecovery电脑数据恢复软件应用
  8. CSS3D魔法——旋转魔方
  9. 计算机表格制作培训教材,电脑制作表格教案设计
  10. Smartbi的下载安装教程
  11. rft测试软件,RFT 测试框架的核心
  12. 做软件测试有前途么?
  13. 如何对接身份证实名认证?
  14. ready和onload的区别
  15. Kotlin第三章:AndroidUI简介
  16. 编程中的逻辑实现,三种逻辑结构(顺序、循环、分支)、跳转、函数以及错误处理
  17. 「汇编」加深理解段地址*10H(*16)必须是16的倍数
  18. 最权威的智商测试软件,最权威的智商测试题及答案
  19. 鸿蒙系统原生app,鸿蒙系统第三次升级,iOSMIUI结合体吗,希望多多增加原生App...
  20. Flash的事件机制

热门文章

  1. 肝内胆管结石有哪些严重危害?
  2. Oracle 性能调整与优化-程国华-专题视频课程
  3. google的RateLimiter限流器的使用
  4. 【经典】一个大数据学习的解决方案
  5. 五伤四损 - 万全《养生四要》
  6. 【金融大脑-一支优秀的队伍】比赛经验分享
  7. 软件开发人员如何自我学习?
  8. 阿里云盘内测邀请码是多少?阿里云盘邀请码获得方法
  9. Delphi编程中流的使用
  10. Autovue显示dwg等图纸乱码问题解决