当前位置:首页 » 操作系统 » 随机语句源码

随机语句源码

发布时间: 2022-08-11 07:47:11

1. 如何在c语言中生成正态分布的随机数,要源代码~谢谢

随机生成一百个1至100的随机数。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
int main(int argc, char *argv[])
{
int i;
int a[N];
srand(time(NULL));
for(i=0;i<N;i++)
a[i]=rand()%100+1;
printf("生成的随机数为:\n");
for(i=0;i<N;i++)
{
printf("%5d",a[i]);
if((i+1)%10==0)
printf("\n");
}
system("PAUSE");
return 0;
}
输出结果如下:
生成的随机数为:
41 15 82 1 23 51 16 96 92 17
86 71 87 69 74 5 50 18 42 52
46 34 52 18 40 74 79 35 22 36
65 94 80 91 18 72 61 79 4 11
61 30 95 55 11 19 38 87 78 52
95 30 99 53 99 99 10 79 70 33
91 85 10 99 47 58 93 41 19 71
56 60 10 24 73 87 18 38 13 73
57 22 91 4 37 60 67 58 85 48
46 7 57 100 73 96 60 44 24 23
请按任意键继续. . .

2. 急!!!!!用c语言编写的产生正态随机数的源代码!!!

一般有两种算法
算法一产生12个(0,1)平均分布的随机函数,用大数定理可以模拟出正态分布。
算法二用到了数学中的雅可比变换,直接生成正态分布,但此算法在计算很大规模的数时
会出现溢出错误。
测试程序:
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

double _random(void)
{
int a;
double r;

a=rand()%32767;
r=(a+0.00)/32767.00;

return r;

}

double _sta(double mu,double sigma)
{
int i;
double r,sum=0.0;

if(sigma<=0.0) { printf("Sigma<=0.0 in _sta!"); exit(1); }
for(i=1;i<=12;i++)
sum = sum + _random();
r=(sum-6.00)*sigma+mu;

return r;

}

double _sta2(double mu,double sigma)
{
double r1,r2;

r1=_random();
r2=_random();

return sqrt(-2*log(r1))*cos(2*M_PI*r2)*sigma+mu ;

}

int main()
{
int i;
double mu,sigma;

srand( (unsigned)time( NULL ) );
mu=0.0;
sigma=1.0;
printf("Algorithm 1:\n");
for(i=0;i<10;i++)
printf("%lf\t",_sta(mu,sigma));
printf("Algorithm 2:\n");
for(i=0;i<10;i++)
printf("%lf\t",_sta2(mu,sigma));
return 0;

}

//由均匀分布的随机数得到正态分布的随机数
#include <math.h>

float gasdev(im)
int *im;
{
static int iset=0;
static float gset;
float fac,r,v1,v2;
float ran1();//产生均匀分布的随机数,可利用系统函数改写

if (iset == 0) {
do {
v1=2.0*ran1(im)-1.0;
v2=2.0*ran1(im)-1.0;
r=v1*v1+v2*v2;
} while (r >= 1.0);
fac=sqrt(-2.0*log(r)/r);
gset=v1*fac;
iset=1;
return v2*fac;
} else {
iset=0;
return gset;
}
}
原理可找本数值算法方面的书看看。

3. C语言如何产生一定范围内一定数量的不同随机数

源代码如下:

#include <stdio.h>

#include <stdlib.h>

#include <stdbool.h>

#include <unistd.h>

#define a 16807//or 48271

#define m 2147483647

#define q (m/a)

#define r (m%a)

static long int seed = 1;

//return rand long in [1,m]

long int pm_rand(void)

{

long hi = seed / q;

long lo = seed % q;

long tmp = a * lo - r * hi;

if(tmp > 0)

seed = tmp;

else

seed = tmp + m;

return seed;

}

int main(void)

{

for(int i = 0;i < 100;++i)

printf("%ld ",pm_rand());

puts("");

return 0;

}

(3)随机语句源码扩展阅读

不指定范围产生随机数的源代码

#include<stdio.h>
#include<stdlib.h>
int main()
{
int i;
for(i=0; i<10; i++) //随机产生10个数。
{
printf("%d ", rand());
}
return 0;
}

4. 急 求c语言随机抽取姓名源码

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
struct
{
charstr[20];//名字
intno;//号码
}a[99]={{"",0}};//初始化
intmain()
{
FILE*fp;
charch;
inti,n=0,choice,who;
fp=fopen("name.txt","r");
if(fp==NULL)
{
printf("cannotopenthefile ");
return1;
}
while((ch=fgetc(fp))!=EOF)
{
if(ch==' ')n++;//一行一个名字,计算人数
}
rewind(fp);
for(i=0;i<n;i++)
{
a[i].no=i;//每人对应的号码
fscanf(fp,"%s ",a[i].str);

}
srand(time(NULL));
for(i=1;i<n;i++)
{
printf("============= 1.抽取0.退出 ============= ");
scanf("%d",&choice);
if(choice==1)
{
loop:
who=rand()%n+1;
if(a[who].no==0)gotoloop;
puts(a[who].str);
a[who].no=0;//抽取过的标志为0
}
elsebreak;
}
fclose(fp);
return0;
}

5. 易语言随机抽签源码

变量A取随机数
变量B取随机数
变量C=A+"-"+B

6. vb 随机数 源代码

A为数组变量. 如果要读取A的数值,用循环就可以读出

'需要控件:command1,text1,text2
Dim A(20) As Single

Private Sub Command1_Click()
Call RndNum(Text1, Text2)
End Sub

Private Sub Form_Load()
Text1 = 2 '起点
Text2 = 100 '终点

End Sub

Sub RndNum(S1 As Long, S2 As Long)
For i = 1 To 20
A(i) = Format(Rnd() * S2, "#.00")
If A(i) < S1 Then A(i) = A(i) + S1
Print A(i)
Next i
End Sub

7. c/c++的随机函数的源代码怎么写

static int next=1;
int rand(void)

{
next = next * 1103515245 + 12345;
return (next/65536) % 32768;
}
return一句的功能只是把得数的绝对值控制在0~32767之间,关键是next = next * 1103515245 + 12345一句。next变量是静态的,变化以后的值是不消失的,下一次还可用,所以每执行一次next = next * 1103515245 + 12345就获得一个新值,这个新值被return取整除、取余除后控制在0~32767之间就形成了0~32767的随机数。比如第一次,next=1*1103515245 + 12345=1103527590,经return中的对65536取整、对32768取余后就是16838;若再来一次,next已经是1103527590了,那么next = next * 1103515245 + 12345就为next = 1103527590 * 1103515245 + 12345=1217759518843121895;但这个数已经溢出了,实际上表示成了-1770082073,经return中取整取余后返回的就是-27009;可以算出来,再下一次是10113……不过,你这个函数并不能产生真正意义上的“随机”数,因为作为基数的1103515245在每次开始时是不变的,所以只能得出同样的序列,即每次执行都产生16838、-27009、10113……这样一组无限多的数。所以实际的C随机函数rand()的形参并不是void而是一个长整型变量,通常来调用实时时间函数获取实时时间值来得到,因为时间是每时每刻都在变化的,所以充当"1103515245”角色的数就每调用一次的值都不同。这样每次执行就都能得到不重复的序列。至于12345,我想随便取个数都行!仅供参考……

8. 易语言随机抽取一个数值的源码

.程序集 窗口程序集1
.程序集变量 名字组, 文本型, , "0"

.子程序 __启动窗口_创建完毕

名字组 = { “赵1”, “赵2”, “赵3”, “赵4”, “赵5”, “赵6”, “赵7”, “赵8” }
置随机数种子 ()
编辑框1.标记 = “1”
编辑框2.标记 = “2”
编辑框3.标记 = “3”
编辑框4.标记 = “4”
编辑框5.标记 = “5”
编辑框6.标记 = “6”
编辑框7.标记 = “7”
编辑框8.标记 = “8”

.子程序 _按钮1_被单击
.局部变量 文本, 文本型
.局部变量 临时数组, 文本型, , "0"
.局部变量 y, 整数型
.局部变量 x, 整数型
.局部变量 编辑框变量, 编辑框

临时数组 = 名字组
.判断循环首 (取数组成员数 (临时数组) > 0)
x = 取随机数 (1, 取数组成员数 (临时数组))
文本 = 文本 + “[” + 临时数组 [x] + “]”
编辑框变量 = 取标记组件 (取数组成员数 (临时数组))
编辑框变量.内容 = 临时数组 [x]
清除数组 (临时数组)
.计次循环首 (取数组成员数 (名字组), y)
.如果真 (寻找文本 (文本, “[” + 名字组 [y] + “]”, 0, 假) < 0)
加入成员 (临时数组, 名字组 [y])

.如果真结束
调试输出 (名字组 [y])
.计次循环尾 ()
.判断循环尾 ()

9. randomize()源代码是什么

我知道C语言的随机数,Randomize应该是初始化随机函数吧,源代码可能很简单
seed = i;
其中i可能是当前系统时间,或者是快速变化着的CPU时钟,只要你想得到是可以的,都可以当做i
seed就是随机种子,不同的种子种下之后,理论上就可以产生不同的果实(随机数列)
而rand () (在C中的随机数)其实也复杂不到那里去,毕竟是伪随机数。
它采用一种叫做线性同余法的方法生成随机数的。
实际上就是这个递推公式
Xn+1 = (AXn + B) mod M
mod就是求余(求模)的意思,也就是第二个随机数是根据第一个生成出来的,所以为什么第一个叫种子就不难理解了。
M是周期(T = M - 1)的重要标志,M越大周期就越长,如果不想随机数经常重复就把它设置大一点吧。
A和B都是常量,M是素数(质数),A则是M的原根
如果不知道这些是什么,那我给出我试过的一组数吧
M = 32719
A = 2
B = 17
效果还可以,毕竟是伪随机数吧,不能要求太高,一下是我用C语言的实现
#include <stdio.h>

#include <windows.h>

// Global variable

int seed = 0;

// Initialize the Seed

void Srand ( int inSeed )

{

seed = inSeed;

}

// Random Arithmetic

int Random ( void )

{

const unsigned int m = 32719;

const int a = 2;

const int b = 17;

seed = (seed*a + b)%m;

return seed;

}

// CPU clock

int Clock ( void )

{

_asm

{

RDTSC

}

}

int main ( void )

{

int inSeed;

int randNumber;

int count0 = 0, count1 = 0;

printf ( "Please type the initial seed\n0 for default\n" );

scanf ( "%d", &inSeed );

if ( inSeed != 0 )

Srand ( inSeed );

else

Srand ( Clock () );

for ( int i = 0; i < 1000; i++ )

{

randNumber = Random () % 2;

printf ( "%d\n", randNumber );

if ( randNumber == 0 )

count0++;

else

count1++;

}

printf ( "output 0 : %d\n", count0 );

printf ( "output 1 : %d\n", count1 );

system ( "pause" );

return 0;

}
如果不明白,用网络HI我吧

10. 求VB设计一个随机抽题程序源码

楼主你好,假设有十道题,Rnd函数返回[0,1)之间的一个随机数,Randomize是将随机数初始化,代码如下:
Private Sub cmdok_click()
Randomize
Label1.Caption="随机题数为:"&Int((Rnd*10)+1)
End Sub

热点内容
尾货棉服直播间脚本 发布:2025-01-16 01:21:45 浏览:227
vb编程步骤 发布:2025-01-16 01:11:58 浏览:201
bb霜解压 发布:2025-01-16 01:11:11 浏览:596
编程怼人 发布:2025-01-16 00:53:08 浏览:760
建立共享服务器地址 发布:2025-01-16 00:26:40 浏览:565
android开机动画修改 发布:2025-01-16 00:26:26 浏览:872
怎么解压pc版游戏 发布:2025-01-16 00:16:32 浏览:122
v9更新到91有方舟编译器吗 发布:2025-01-16 00:11:49 浏览:500
AB系统编程 发布:2025-01-16 00:09:37 浏览:621
存储过程如何遍历一个表的数据 发布:2025-01-16 00:08:34 浏览:875