首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

将一维区间随机划分为指定块数解决思路

2012-05-20 
将一维区间随机划分为指定块数我想将一维区间随机划分为指定块数,返回每块的大小。下面是我的代码,可是达不

将一维区间随机划分为指定块数
我想将一维区间随机划分为指定块数,返回每块的大小。下面是我的代码,可是达不到预定效果。各位有什么方法可以实现这一功能,不吝赐教!谢谢了!

C/C++ code
#include <stdlib.h>#include <time.h>#include <iostream>using namespace std;int main(){    //区间的下限    int lower=10;    //区间的上限    int upper=20;    //欲随机划分的块数    int count=5;    int *a=new int[count];    srand(time(NULL));     int sum=0;    //幻数    int magic=10;    for(int i=0;i<count;i++)    {        a[i]=rand()%magic;        sum+=a[i];    }    for(int i=0;i<count;i++)    {        a[i]=((double)a[i]/sum)*(upper-lower);        cout<<a[i]<<endl;    }    delete []a;    return 0;} 


[解决办法]
取10到20间的随机数应该这样写
a[i]= 10+ (rand()% 11);

一般的如果你希望取得 a到b之间(b>a,包含a和b)的随机数,
可这样写:
 a[i]= a + (rand()% (b-a+1));
[解决办法]
假如0..9共10个元素随机划分为0..2共3块:
第0块,从0..10-3随机选出比如5,即0..5归第0块
第1块,从5+1..10-2随机选出比如7,即6,7归第1块
第2块,从7+1..10-1,即8,9归第2块。

热点排行