标题:没事就折腾一下,各位大大有没有写过一定范围内按比例出随机数?
只看楼主
shonken
Rank: 2
等 级:论坛游民
帖 子:95
专家分:21
注 册:2017-1-15
结帖率:86.67%
已结贴  问题点数:20 回复次数:21 
没事就折腾一下,各位大大有没有写过一定范围内按比例出随机数?
如:随机0~100的整数,0~30占70%,31~80占10%,81~100占20%这样?
搜索更多相关主题的帖子: 随机数 随机 范围 整数 
2022-12-14 09:43
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:3 
随机0~100的整数要多少个?
2022-12-14 10:13
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:3 
用循环来获取随机数,符合要求的则保留,不符合要求的则放弃不用,直至获得需要数量的随机数。

活到老,学到老! http://www. E-mail:hu-jj@
2022-12-14 10:23
shonken
Rank: 2
等 级:论坛游民
帖 子:95
专家分:21
注 册:2017-1-15
得分:0 
以下是引用吹水佬在2022-12-14 10:13:23的发言:

随机0~100的整数要多少个?


暂没具体的应用场景,可以假设一下

随机0~100的整数,假设需要50个数,其中0~30占70%的机率,31~80占10%的机率,81~100占20%机率,数可以重复。
2022-12-14 11:23
sam_jiang
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:542
专家分:781
注 册:2021-10-13
得分:3 
你这是伪随机啊,直接0-30  35个。31-80  5个。剩下的10个!
2022-12-14 11:36
shonken
Rank: 2
等 级:论坛游民
帖 子:95
专家分:21
注 册:2017-1-15
得分:0 
以下是引用sam_jiang在2022-12-14 11:36:49的发言:

你这是伪随机啊,直接0-30  35个。31-80  5个。剩下的10个!


有所侧重,想起一个场景可用,就像汉字库,排前的常用字,排后的生僻字,随机挑选时希望得到常用字多些
2022-12-14 11:47
sam_jiang
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:542
专家分:781
注 册:2021-10-13
得分:0 
那我觉得你可以转换思路,建一个表来记录用户的输入习惯,记录用户最常使用的10个字,当用户输入拼音时,调取最常用的10个字。目前市面上流行的输入法都是用这种办法!对于新用户,你只需要按笔画顺序推送候选字就可以了。这种方法非常精准!
2022-12-14 15:15
cjc1010
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:64
专家分:195
注 册:2006-4-16
得分:3 
s1 取0-100
case s1<=10
   s2 取31-80
case s1>10 and s1<30
   s2 取80-100
other
   s2取0-30
这样可合你意?
2022-12-14 15:26
shonken
Rank: 2
等 级:论坛游民
帖 子:95
专家分:21
注 册:2017-1-15
得分:0 
以下是引用cjc1010在2022-12-14 15:26:38的发言:

s1 取0-100
case s1<=10
   s2 取31-80
case s1>10 and s1<30
   s2 取80-100
other
   s2取0-30
这样可合你意?


差不多这个样子,如果是自定义比例呢?
2022-12-14 17:33
shonken
Rank: 2
等 级:论坛游民
帖 子:95
专家分:21
注 册:2017-1-15
得分:0 
谢谢以上各位大大帮我理清思路

交个作业

程序代码:
clea
nMin1 = 31
nMax1 = 80
nMin2 = 81
nMax2 = 100
nMin3 = 0
nMax3 = 30
nResult = 0
lcResult = ""
For i = 0 To 100
    nRang = Int((100 - 0 + 1) * Rand( ) + 0)

    Do Case
        Case nRang <=10
            nResult = Int((nMax1 - nMin1 + 1) * Rand( ) + nMin1)
        Case Between(nRang,11,30)
            nResult = Int((nMax2 - nMin2 + 1) * Rand( ) + nMin2)
        Otherwise
            nResult = Int((nMax3 - nMin3 + 1) * Rand( ) + nMin3)
    Endcase
    lcResult = lcResult + Transform(nResult)+","
Endfor
?lcResult
2022-12-14 17:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510943-1-1.html




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

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