比如有6物品,客户要求要达到30%或者40%的中奖率,这个是可以让客户自定义的,应该怎么做?
这6个物品对应在数据库中分别有六个id,我把这6个物品在程序中导入到一个strList: TStrings;里面
然后用strlist.count来随机抽取,但是这个是每次抽取都要中奖,达不到客户要求的30%或者40%自定义的
中奖率,就是有70%或者60%的几率是抽不中的,用timer控件来自动控制停止
10 个解决方案
#1
你再加9个不中奖的id(随便编)到你的strlist中不就行了
#2
几率表:
30 个1 70 个0 ,组合成100个数字的tstringlist ,然后随机取这里面的一个数字,取到1的几率就是30%了
物品表:
再取到1的基础上,去 物品列表中随机取一个中奖物品,就是6个中随便取一个
30 个1 70 个0 ,组合成100个数字的tstringlist ,然后随机取这里面的一个数字,取到1的几率就是30%了
物品表:
再取到1的基础上,去 物品列表中随机取一个中奖物品,就是6个中随便取一个
#3
这好办,6个是吧,6个ID,
你在TStringList中再加入14个无效的ID,然后用随机数
Random(20)作为索引值,基本就能保证30%
同样,40%那就自己算算TStringList中一共需要多少个无效ID就是了
你在TStringList中再加入14个无效的ID,然后用随机数
Random(20)作为索引值,基本就能保证30%
同样,40%那就自己算算TStringList中一共需要多少个无效ID就是了
#4
嗯,二楼说的有道理哦,更结合一下,取随机数
Random(10)<3就是30%了,Random(10)<4就是40%
if Random(10) < 3 then
begin
//30%中奖,给奖品就试了
end
else
begin
//70%没中奖的,抱歉了,呵呵
end;
Random(10)<3就是30%了,Random(10)<4就是40%
if Random(10) < 3 then
begin
//30%中奖,给奖品就试了
end
else
begin
//70%没中奖的,抱歉了,呵呵
end;
#5
用Random判斷........
#6
呵呵,首先谢谢各位了!
但是我要用timer控件来控制时间啊,比如客户设定轮盘转动5秒或者7秒等,该咋个做哦?
但是我要用timer控件来控制时间啊,比如客户设定轮盘转动5秒或者7秒等,该咋个做哦?
#7
根据输入设置时间周期,如5s或7s,启动时打开timer计时,一个时间周期到了就结束
#8
如果中奖和不中奖的选择都在一个轮盘中给用户看到,并且轮转,那么你就需要像我在3楼说的,按照几率想列表中插入若干无效的ID,把中奖ID用随机函数分配到不中奖的ID中,然后在Timer的控制下进行抽奖。
#9
这种问题哎
if Random(100) < 用户设置的中奖率 then
begin
//中奖了 随即从StringList里取一个吧
end
else
begin
//没中奖 下次继续努力
end;
if Random(100) < 用户设置的中奖率 then
begin
//中奖了 随即从StringList里取一个吧
end
else
begin
//没中奖 下次继续努力
end;
#10
Random(100) < 22 22%的中奖几率
#1
你再加9个不中奖的id(随便编)到你的strlist中不就行了
#2
几率表:
30 个1 70 个0 ,组合成100个数字的tstringlist ,然后随机取这里面的一个数字,取到1的几率就是30%了
物品表:
再取到1的基础上,去 物品列表中随机取一个中奖物品,就是6个中随便取一个
30 个1 70 个0 ,组合成100个数字的tstringlist ,然后随机取这里面的一个数字,取到1的几率就是30%了
物品表:
再取到1的基础上,去 物品列表中随机取一个中奖物品,就是6个中随便取一个
#3
这好办,6个是吧,6个ID,
你在TStringList中再加入14个无效的ID,然后用随机数
Random(20)作为索引值,基本就能保证30%
同样,40%那就自己算算TStringList中一共需要多少个无效ID就是了
你在TStringList中再加入14个无效的ID,然后用随机数
Random(20)作为索引值,基本就能保证30%
同样,40%那就自己算算TStringList中一共需要多少个无效ID就是了
#4
嗯,二楼说的有道理哦,更结合一下,取随机数
Random(10)<3就是30%了,Random(10)<4就是40%
if Random(10) < 3 then
begin
//30%中奖,给奖品就试了
end
else
begin
//70%没中奖的,抱歉了,呵呵
end;
Random(10)<3就是30%了,Random(10)<4就是40%
if Random(10) < 3 then
begin
//30%中奖,给奖品就试了
end
else
begin
//70%没中奖的,抱歉了,呵呵
end;
#5
用Random判斷........
#6
呵呵,首先谢谢各位了!
但是我要用timer控件来控制时间啊,比如客户设定轮盘转动5秒或者7秒等,该咋个做哦?
但是我要用timer控件来控制时间啊,比如客户设定轮盘转动5秒或者7秒等,该咋个做哦?
#7
根据输入设置时间周期,如5s或7s,启动时打开timer计时,一个时间周期到了就结束
#8
如果中奖和不中奖的选择都在一个轮盘中给用户看到,并且轮转,那么你就需要像我在3楼说的,按照几率想列表中插入若干无效的ID,把中奖ID用随机函数分配到不中奖的ID中,然后在Timer的控制下进行抽奖。
#9
这种问题哎
if Random(100) < 用户设置的中奖率 then
begin
//中奖了 随即从StringList里取一个吧
end
else
begin
//没中奖 下次继续努力
end;
if Random(100) < 用户设置的中奖率 then
begin
//中奖了 随即从StringList里取一个吧
end
else
begin
//没中奖 下次继续努力
end;
#10
Random(100) < 22 22%的中奖几率