开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

12
返回列表 发新帖
楼主: chungbin
收起左侧

[已解决] 易语言概率抽奖问题

 关闭 [复制链接]
发表于 2023-4-30 16:33:52 | 显示全部楼层   河南省新乡市
chungbin 发表于 2023-4-30 15:23
你这样的就是我后面那一套的,但是这样的要怎么控制概率大的抽完了就不会再出大的了,
就比如说20的金额 ...

添加判断  如果抽取完了就跳过 重新抽取
回复

使用道具 举报

结帖率:100% (49/49)

签到天数: 29 天

发表于 2023-4-30 18:03:12 | 显示全部楼层   江西省赣州市
花的嫁纱 发表于 2023-4-30 15:09
把概率等分一万份    每个数值分配给一个区间
取1到一万的随机数     看看随机数在哪个数值的区间   就取那 ...

那我要是抽到100次1000呢,真的有100个1000的红包吗
回复

使用道具 举报

结帖率:100% (49/49)

签到天数: 29 天

发表于 2023-4-30 18:03:48 | 显示全部楼层   江西省赣州市
首先比如举一个简单的栗子;
现重数据库取出奖品list分别为以下:;
1.苹果手机 2.苹果电脑 3.苹果一斤 4.苹果一箱 其获得概率分别为0.0001,0.0002,0.01,0.001;
下标分别为0,1,2,3;
计算奖品概率总和sum;
通过for循环遍历奖品list计算当前概率总和(如第一个就是0.0001,第二个0.0003);
用当前概率总和除以总概率,放入list数组中(可保证总概率恒为1);
用Math.random()函数生成0到1头尾不含的数字idex放入list中
通过Collections.sort(list)排序list,取出idex在数组中的下标,对应选取相同下标的奖品,抽奖结束。
————————————————
版权声明:本文为CSDN博主「qq_39707105」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_39707105/article/details/83991677

参考一下
回复

使用道具 举报

结帖率:100% (2/2)
发表于 2023-4-30 22:51:32 | 显示全部楼层   福建省泉州市
chungbin 发表于 2023-4-30 15:23
你这样的就是我后面那一套的,但是这样的要怎么控制概率大的抽完了就不会再出大的了,
就比如说20的金额 ...

我觉得6楼的想法挺有趣的
回复

使用道具 举报

结帖率:83% (10/12)
 楼主| 发表于 2023-4-30 23:16:57 | 显示全部楼层   贵州省黔东南苗族侗族自治州
King子辛 发表于 2023-4-30 17:41
[e=1].版本 2
.支持库 spec

今天太晚了。明天用你这个改改看下
回复

使用道具 举报

结帖率:95% (84/88)

签到天数: 5 天

发表于 2023-5-1 03:45:01 | 显示全部楼层   美国
计次循环首
随机数=随机数+到文本(取随机数(0,9))
真正随机数=到数值(随机数)
回复

使用道具 举报

结帖率:83% (10/12)
 楼主| 发表于 2023-5-1 11:41:20 | 显示全部楼层   贵州省黔东南苗族侗族自治州
King子辛 发表于 2023-4-30 17:41
  
[/quote]
被我修改了一下已经可以用了,谢谢大神
[e=0].版本 2
子程序名返回值类型公开备 注
概率算法3  
变量名类 型静态数组备 注
概率整数型8
红包数量整数型0
最大随机数整数型 
i整数型 
随机数整数型 
红包金额整数型8
概率 = { 1, 10, 20, 40, 100, 500, 2000, 5000 }
加入成员 (红包数量, 一千)
加入成员 (红包数量, 五百)
加入成员 (红包数量, 三百)
加入成员 (红包数量, 两百)
加入成员 (红包数量, 一百)
加入成员 (红包数量, 五十)
加入成员 (红包数量, 三十)
加入成员 (红包数量, 二十)
' 红包数量 = { 一千, 五百, 三百, 两百, 一百, 五十, 三十, 二十 }
红包金额 = { 1000, 500, 300, 200, 100, 50, 30, 20 }
调试输出 (红包数量)
置随机数种子 ()
最大随机数 = 0
计次循环首 (取数组成员数 (红包数量), i)
如果真 (红包数量 [i] > 0)
最大随机数 = 最大随机数 + 概率 [i]

计次循环尾 ()
' 调试输出 (最大随机数)
如果真 (最大随机数 > 0)
随机数 = 取随机数 (1, 最大随机数)
' 调试输出 (随机数)
' 调试输出 (“软件运行到这”)
' 调试输出 (红包数量 [1])
判断 (红包数量 [1] > 0 随机数 ≤ 概率 [1])
' 调试输出 (“软件运行到判断一千红包这”)
红包数量 [1] = 红包数量 [1] - 1
更新信息 (7)
调试输出 (“红包金额”, 红包金额 [1], “随机数”, 随机数)
判断 (红包数量 [1] > 0 随机数 ≤ 概率 [1] + 概率 [2])
' 调试输出 (“软件运行到判断五百红包这”)
红包数量 [2] = 红包数量 [2] - 1
更新信息 (6)
调试输出 (“红包金额”, 红包金额 [2], “随机数”, 随机数)
判断 (红包数量 [1] > 0 随机数 ≤ 概率 [1] + 概率 [2] + 概率 [3])
' 调试输出 (“软件运行到判断三百红包这”)
红包数量 [3] = 红包数量 [3] - 1
更新信息 (5)
调试输出 (“红包金额”, 红包金额 [3], “随机数”, 随机数)
判断 (红包数量 [1] > 0 随机数 ≤ 概率 [1] + 概率 [2] + 概率 [3] + 概率 [4])
' 调试输出 (“软件运行到判断两百百红包这”)
红包数量 [4] = 红包数量 [4] - 1
更新信息 (4)
调试输出 (“红包金额”, 红包金额 [4], “随机数”, 随机数)
判断 (红包数量 [1] > 0 随机数 ≤ 概率 [1] + 概率 [2] + 概率 [3] + 概率 [4] + 概率 [5])
红包数量 [5] = 红包数量 [5] - 1
更新信息 (3)
调试输出 (“红包金额”, 红包金额 [5], “随机数”, 随机数)
判断 (红包数量 [1] > 0 随机数 ≤ 概率 [1] + 概率 [2] + 概率 [3] + 概率 [4] + 概率 [5] + 概率 [6])
红包数量 [6] = 红包数量 [6] - 1
更新信息 (2)
调试输出 (“红包金额”, 红包金额 [6], “随机数”, 随机数)
判断 (红包数量 [1] > 0 随机数 ≤ 概率 [1] + 概率 [2] + 概率 [3] + 概率 [4] + 概率 [5] + 概率 [6] + 概率 [7])
红包数量 [7] = 红包数量 [7] - 1
更新信息 (1)
调试输出 (“红包金额”, 红包金额 [7], “随机数”, 随机数)
判断 (红包数量 [1] > 0 随机数 ≤ 概率 [1] + 概率 [2] + 概率 [3] + 概率 [4] + 概率 [5] + 概率 [6] + 概率 [7] + 概率 [8])
红包数量 [8] = 红包数量 [8] - 1
更新信息 (8)
调试输出 (“红包金额”, 红包金额 [8], “随机数”, 随机数)




i支持库列表   支持库注释   
spec特殊功能支持库

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

关闭

精易论坛 - 有你更精彩上一条 /2 下一条

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表