| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1871 人关注过本帖
标题:关于C++程序 自建随机数 怎样做到每次运行时数值不同呀各位高手就这程序
只看楼主 加入收藏
renhao126
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-4-13
收藏
 问题点数:0 回复次数:13 
关于C++程序 自建随机数 怎样做到每次运行时数值不同呀各位高手就这程序
#include "iostream.h"
#include "math.h"
#define S 2
float Xn=12345;
float Rn;
struct DataType{
    int temp;
    int key;
};
float Rnd(int k)
{             
    Xn=12354*k;
    Xn=(float)fmod((pow(2,16)+1)*Xn+(0.5+sqrt(3)/6)/pow(2,32),pow(2,32));
     //此式是的公式Xn+1=(Lamda*Xn+Miu)%M

        Rn=(float)Xn/pow(2,32);
//Rn+1=Xn/M
/*M=pow(2,32);
    Lamda=pow(2,16)+1;
    Miu=(0.5+sqrt(3)/6)/M;
*/
        return Rn;
}
void MyRnd(int n,struct DataType *a)
{  
    for(int j=1;j<n;j++)
       {            
            a[j].key=Rnd(j)*120;
            //cout<<a[j].key<<endl;
      }
}
void quicksort (struct DataType *a,int first,int end )
{
int i,j,temp;
    i=first; j=end; temp=a[i].key; //初始化
while(i<j)
{
while (i<j && temp<= a[j].key) j--;
a[i].key =a[j].key ;

while (i<j && a[i].key<=temp) i++;
a[j].key =a[i].key ;
}
a[i].key =temp;
if (first<i-1) quicksort(a, first, i-1); //对左侧分区域进行快速排序
if (i+1<end) quicksort(a, i+1, end); //对右侧分区域进行快速排序

}//这是一个快速排序的程序
void main(){
    int n;
    n=300;
    struct DataType a[300];
   MyRnd(n,a);
//for(int k=1;k<=300;k++) cout<<a[k].key<<endl;
   cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
quicksort(a,1,n);
for(int k=1;k<=300;k++) cout<<a[k].key<<endl;
}

[[it] 本帖最后由 renhao126 于 2008-4-14 12:11 编辑 [/it]]
搜索更多相关主题的帖子: 随机数 pow float 数值 
2008-04-13 22:37
renhao126
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-4-13
收藏
得分:0 
有个回话的撒有二天了
5555
2008-04-13 23:06
hitxinyu
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2008-4-11
收藏
得分:0 
数组越界了。
改成这样
    n=300;
[un]    struct DataType a[301];[/un]
或者
void MyRnd(int n,struct DataType *a)
{  
[un]    for(int j=0;j<n;j++)[/un]
    {            
        a[j].key=Rnd(j)*120;
        //cout<<a[j].key<<endl;
    }
}
收到的鲜花
  • renhao1262008-04-13 23:18 送鲜花  2朵   附言:我很赞同
2008-04-13 23:06
renhao126
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-4-13
收藏
得分:0 
不行
还是有内存不能读的错误
2008-04-13 23:10
renhao126
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-4-13
收藏
得分:0 
谢谢
2008-04-13 23:12
hitxinyu
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2008-4-11
收藏
得分:0 
好了么?
2008-04-13 23:13
renhao126
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-4-13
收藏
得分:0 
我总是这样粗心
太大意了呀
2008-04-13 23:13
hitxinyu
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2008-4-11
收藏
得分:0 
呵呵,要学会自己找错误啊。
2008-04-13 23:15
renhao126
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-4-13
收藏
得分:0 
我自已产生随机数怎样做到每次运行时不同
就这个程序怎么改呀
2008-04-13 23:17
hitxinyu
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2008-4-11
收藏
得分:0 
还有一点。
for的应用
不推荐
for(int j=1;j<=n;j++)
推荐
for(int j=0;j<n;j++)
忘记那个大师说的了
基本的思想好像是左闭右开
即[0,n)
循环的个数是n,这样不容易出错。也不容易引起歧义。
2008-04-13 23:17
快速回复:关于C++程序 自建随机数 怎样做到每次运行时数值不同呀各位高手就这程 ...
数据加载中...
 
   



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

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