| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1561 人关注过本帖
标题:没事就折腾一下,各位大大有没有写过一定范围内按比例出随机数?
只看楼主 加入收藏
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:3 
以下是引用shonken在2022-12-14 09:43:38的发言:

如:随机0~100的整数,0~30占70%,31~80占10%,81~100占20%这样?

好像是可以这样做
1.取各段的数量
段1 = int(总数) * 0.7
段2 = int(总数) * 0.1
段3 = int(总数) * 0.2
或者这样
段2 = int(总数) * 0.1
段3 = int(总数) * 0.2
段1 = 总数 - 段2 - 段3
2.用循环分别取对应的段位的随机数
我记得,好像可以这样的
*0~30段位
for i=1 to 30
?int(rand()*30)
endfor
*31~80段位
for i=1 to 80
?int(rand()*50)+30
*81~100段位
for i=1 to 20
?int(rand()*20)+80
endfor



[此贴子已经被作者于2022-12-17 08:14编辑过]

2022-12-17 08:02
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:350
专家分:330
注 册:2013-10-4
收藏
得分:3 
创建一个表dbfInt.dbf,就一个整型数字段aint。
或者,定义一个数组Dime aint[1000]
生成1000个数值在要求范围以内的随机数,必要时,生成1万个也行。

=rand(-1)
for i=1 to 1000
    lnInt = int(rand()*100)
    insert into dbfInt (aint) value (lnInt)
endfor i

然后,自上而下,往后扫描这张表,取到合适的,0--30,就留下,不合适的跳过,至取满所需个数;
继续,从下一条记录开始,往后扫描这张表,取到合适的,31--70,就留下,不合适的跳过,至取满所需个数;
继续,从下一条记录开始,往后扫描这张表,取到合适的,71--100,就留下,不合适的跳过,至取满所需个数。
……全剧终。
2022-12-17 08:38
快速回复:没事就折腾一下,各位大大有没有写过一定范围内按比例出随机数?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022865 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved