| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1041 人关注过本帖
标题:[求助]求教一个简单的C问题
只看楼主 加入收藏
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
[求助]求教一个简单的C问题
本人是C新手,想请教各位高手一个简单的C程序问题.

比如:
Num_1=%d
Num_2=%d
Num_1=在区间[-10,10]均匀分布
Num_2=1/3概率 0
1/3概率 在区间[-10,-1]指数分布
1/3概率 在区间[1,10]指数分布
然后随机生成N次Num_1和Num_2

如何用C程序表达呢?

我想表达的意思是:

Num_1Num_2210进制的整数

Num_1的取值在区间[-1010]内,呈现均匀分布

Num_2的取值在区间[-1010]内,有3种情况

1/3概率 值为0

1/3概率 取值在区间[-10-1]内,呈现指数分布

1/3概率 取值在区间[110]内,呈现指数分布

然后随机生成NNum_1Num_2的有效取值.

我已经附加了指数分布的公式图片,请高人帮我分析一下啊!

请各位高人赐教,不胜感激.
谢谢了.
此主题相关图片如下:


上面那句话写错了吧?
不好意思,昨天说错了.今天又改了下,这次看您满意不?
Num_1=rand()%21-10;
Num_2=rand()%3?(rand()%2?(int)(exp(-rand()/B)/B)%10-10):(int)(exp(-rand()/B)/B)%10+1)):0;


对不礼貌的女生收钱......
2006-05-04 09:47
flamefairy
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-5-2
收藏
得分:0 

非常感谢这位热心的soft_wind朋友给予的帮助,但是我有点疑问的就是如果使用?:的表达方式,不是很好推广到更一般性的情况.比如Num_2的取值落在更大区间的时候,比如1/5[...],1/5[...],...甚至1/N[]

我觉得这肯定是大家编写程序时候会遇到的情况,能否找出一个更有通性的表达方式呢?

2006-05-04 19:56
flamefairy
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-5-2
收藏
得分:0 

我是准备这样写

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main ()
{
int n1;
int n2;

int N;

N = 10; // N 次比如10次

/*初始化随机生成器*/
srand ( time(NULL) );


for (n1=N; n1>0; n1--) {

//NUM1
printf ("NUM1 - A number between -10 and 10: %d\n", rand()%21-10);

//NUM2
n2 = rand()%3;

switch (n2)
{
case 0:
printf ("NUM2 - 1/3 chance = 0: %d\n", 0);
break;

case 1:
// 这里空缺了,我不会写指数分布的表达式
printf ("NUM2 - 1/3 chance - A number between -10 and -1: %d\n", -10);
break;

default: // case 2:
// 指数分布的表达式
printf ("NUM2 - 1/3 chance - A number between 1 and 10: %d\n", 10);

}

}

return 0;
}

这样可以吗?

对于那个概率的问题,我还有点疑问,如果我增加两个表达式:

Num_2的取值有5种情况

1/5概率 值为0

1/5概率 取值在区间[-10,-1]内,呈现指数分布

1/5概率 取值在区间[1,10]内,呈现指数分布

1/5概率 取值在区间(-∞,-11]内,呈现均匀分布

1/5概率 取值在区间[10,+∞)内,呈现均匀分布

那么我应该如何表达呢?

[此贴子已经被作者于2006-5-4 20:26:40编辑过]

2006-05-04 20:21
flamefairy
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-5-2
收藏
得分:0 
而且更重要的是我不会表达n个1/n以外的情况.比如:(3/7+1/2+1/14=1)的情况,我希望Num_2按照这个概率生成N次取值,那么该如何表达呢?
2006-05-04 20:33
快速回复:[求助]求教一个简单的C问题
数据加载中...
 
   



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

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