随机数用来控制信息呈现的次数,如何实现?

xlander 2006-12-23 01:38:14
比方说,有三条信息A,B,C,网站根据某个算法挑选其中一条显示出来,现在要控制这三条信息呈现的概率。比方说A:60%,B:25%,C:15%。

我数学比较差,请问各位高人,怎么实现这样的要求?


无意义回复、顶帖者最多得2分,累计不超过10分。
...全文
173 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
nimeide1234567890 2006-12-25
  • 打赏
  • 举报
回复
ding
byhumzhao 2006-12-25
  • 打赏
  • 举报
回复
mark
xlander 2006-12-25
  • 打赏
  • 举报
回复
明白了。谢谢。
xlander 2006-12-24
  • 打赏
  • 举报
回复
居然有这么多星。谢谢大家乐。

同样优先级的怎么办啊?
比方说:
A -- 60
B -- 10
C -- 10
D -- 5
E -- 5
F -- 5
G -- 5

cat_hsfz 2006-12-24
  • 打赏
  • 举报
回复
你的同样优先级的,也是从0类加到1啊:
A 0.00 - 0.60
B 0.60 - 0.70
C 0.70 - 0.80
D 0.80 - 0.85
...
G 0.95 - 1.00
无论权重如何,用1去除以权重之和,得到每一个权重的比例,然后从0类加到1就是了。
wslinfeng 2006-12-24
  • 打赏
  • 举报
回复
同样优先级的怎么办啊?
比方说:
A -- 60
B -- 10
C -- 10
D -- 5
E -- 5
F -- 5
G -- 5

就是1个算法的问题啊,把100划分出来,随机产生1-100的数字,落在哪个段上根据你想要的概率划分
cpp2017 2006-12-24
  • 打赏
  • 举报
回复
在进行概率设置的时候.先按大到小排序,然后累加,这个区间算出来保存起来就好了. A -- 60 0,60 B -- 10 61,70 C -- 10 71,80 D -- 5 81,85 E -- 5 86,90 F -- 5 91,95 G -- 5 96,100 ------说错了莫怪,别给分就是了。
mayaraw 2006-12-24
  • 打赏
  • 举报
回复
真不错,mark一下
cat_hsfz 2006-12-23
  • 打赏
  • 举报
回复
1.你要会用Random,包括全局内仅初始化一次,默认用Timer来作为seed。不明白的可以看MSDN。

2.用Random生成一个随机数,范围是0 <= x < 1,然后你判断x的大小。如果0 <= x < 0.6,就是前60%;如果0.6 <= x < (0.6 + 0.25),就是中间25%;如果(0.6 + 0.5) <= x < 1,就是后面15%。

3.用类似的方法,你想将1(也即是100%)怎样划分都行。
wslinfeng 2006-12-23
  • 打赏
  • 举报
回复
C#中可以实现,也比较好维护,很方便修改,思路很简单,返回1-100之间的随机数,如果在60之间
那么就确定是60%概率中的分支,如果在60+25之间则执行概率25的分支……

//参数分别为3种概率所对应的100分数,本例中value=60,value2=25,value3=15
private int panduan(int value1,int value2,int value3 )
{
System.Random rm=new Random();
int result;
int rmvalue = rm.Next(1,101);
if (rmvalue<=value1)
{
result=1;
}
else if(rmvalue<=value1+value2)
{
result=2;
}
else
{
result=3;
}
return result;

}

//调用函数判断显示哪个
if (panduan(65,25,15)==1)
{
}
else if(panduan(65,25,15)==2)
{
}
else
{
}
webdiyer 2006-12-23
  • 打赏
  • 举报
回复
AdRotator是否适用?它显示广告就是随机的,但可以设置控制所有广告的显示机率
cpp2017 2006-12-23
  • 打赏
  • 举报
回复
请问是通过脚本实现随机选择好还是通过数据库选择比较好那? ======== 如果这个概率是固定的,脚本比较好,如果不是,用数据库好 ------说错了莫怪,别给分就是了。
Surlary 2006-12-23
  • 打赏
  • 举报
回复
请问是通过脚本实现随机选择好还是通过数据库选择比较好那?
cantops 2006-12-23
  • 打赏
  • 举报
回复
@cpp2017(幕白兄)
我好喜欢你的说话风格。。哈哈
winner2050 2006-12-23
  • 打赏
  • 举报
回复
路过jf
cpp2017 2006-12-23
  • 打赏
  • 举报
回复
当然这样比较麻烦。在设置概率的时候。 <BR>------说错了莫怪,别给分就是了。
cpp2017 2006-12-23
  • 打赏
  • 举报
回复
drop table a create table A(name varchar(10),s int,e int) insert into A values('A',0,60) insert into A values('B',62,75) insert into A values('C',76,100) declare @rnd int set @rnd = cast(rand() * 100 as int) % 100 select @rnd select * from A where @rnd>=s and @rnd <= e ------说错了莫怪,别给分就是了。

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧