编程:如何生成一组随机数字?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程:如何生成一组随机数字?相关的知识,希望对你有一定的参考价值。

向各位朋友请教这个问题,分数少了些,不好意思,望各位能给予解答。十分感谢,谢谢 谢谢。

可选数字:1-45
要求随机生成一组数字,6个或者7个数字,不重复。
就好像 35选7 的彩票那样,用VB、ASP编写都可以,或者html里面写代码也可以。
============================
公司的同事帮忙写出了该代码.HTML的.思路不一样,写法不一样,我决定贴出来,不知是否涉及版权问题......
当然了,我个人十分感谢阳光、狗狗乖和koubuntei,谢谢几位花时间留意这个帖子。谢谢!

我是沈阳何氏眼科的一名网络管理员,简单对代码加了一点注释。下面我就把我们程序员写的代码贴出来,希望大家以后有好东西要分享哦。
=======================================================
代码地址: http://zhidao.baidu.com/question/50348072.html

参考技术A 下面的程序可以完成你的功能:

<script language=javascript>
for (i=1;i<=6;i++) document.write(parseInt(Math.random()*45)+1,'<br>');
</script>

以上程序存为ASP或者HTML代码,每次打开页面会生成6个1~45的数字。

补充:
下面的代码可以解决重复的问题,我把1~46存放到数组a[0]~a[45]中,每次产生的随机数只是数组的下标,并且取过的数字移动到数组最后。

<script language=javascript>
var a=new Array();
for (i=0;i<46;i++) a[i]=i+1;
for (i=0;i<6;i++)
k=a.length-i;
j=parseInt(Math.random()*k);
x=a[j];
a[k]=a[j];
a[j]=x;
document.write(a[k],'<br>');

</script>
参考技术B 阳光虽然我很敬佩你 但是你的答案是错的 因为会重复 为了重复的问题我多写了几分钟 然后你就答了
我用ASP实现:
<%
dim t,a,i,k

t="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45"

t1=split(t,",")

for i=1 to 20 '放大循环
Randomize
a=int(rnd()*45+1)
if instr(num,a) then a=46 '设为不可能值

for j=0 to UBound(t1)
if j=a then
num=num& " " & j
k=k+1
if k=7 then
response.write num '输出
response.end
end if
end if
next
next
%>本回答被提问者采纳
参考技术C <%
dim t,a,i,k

t="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45"

t1=split(t,",")

for i=1 to 20 '放大循环
Randomize
a=int(rnd()*45+1)
if instr(num,a) then a=46 '设为不可能值

for j=0 to UBound(t1)
if j=a then
num=num& " " & j
k=k+1
if k=7 then
response.write num '输出
response.end
end if
end if
next
next
%>
参考技术D dim arr(7)

function getRandom
Randomize
getRandom = Int((45 * Rnd) + 1)
end function

function verifyRan(arr,rand)
dim flag
flag=true
for j=0 to ubound(arr)
if arr(j) = rand and arr(j) <> "" then
flag = false
end if
next
verifyRan = flag
end function

for i=0 to 6
random = getRandom
if verifyRan(arr,random) then
arr(i) = random
else
i = i-1
end if
next

for i=0 to 6
response.Write(arr(i)&"<br>")
next

请教编程高手,如何产生从-5到5的一组正态分布的随机数

需要用VC6.0编一个程序,需要产生20000个数字。必须要正态分布的。那位大侠帮下忙

#include <stdio.h>

//产生任意均值与方差的正态分布的随机数
// double u μ 正态分布的均值
// double g σ2=g2 正态分布的方差
// double * r 指向随机数种子
// double grn1() 返回一个均值u 方差g2 正态分布 的随机数

double grn1(double u,double g,double * r)
int i,m;
double s,w,v,t;
s=65536.0; w=2053.0; v=13849.0;
t=0.0;
for (i=1; i<=12; i++)
*r=(*r)*w+v; m=(int)(*r/s);
*r=*r-m*s; t=t+(*r)/s;

t=u+g*(t-6.0);
return(t);


int main()

double u,g,r;
r=5.0;u=1.0;g=1.5;
printf("\n");
for(int i=0;i<=9;i++)
for(int j=0;j<=4;j++)
printf("%10.7lf ", grn1(u,g,&r));

printf("\n");

printf("\n");


运行结果:

1.2386322 -1.1779938 0.5128021 1.9047699 1.5916595
1.1672211 -0.7747955 1.8593597 1.6634369 1.7311859
0.6563568 -1.4673004 -0.0460358 -0.9860992 0.3062592
3.9247894 -0.5367584 3.5153656 -0.3250885 0.0356293
0.1912689 0.2355804 0.2623138 0.3652191 3.6380463
1.1745453 2.0684662 0.4135590 2.3035736 4.8322601
-0.9066315 0.1806488 2.1878510 2.2087250 1.8370209
-0.3335114 3.2908783 0.8039398 1.2994232 -1.1289215
4.1126556 0.6179047 0.4805756 0.7944183 -1.3468170
1.6506195 2.3804779 2.4365082 1.9124603 0.9020844

参考 常用算法程序集(c语言描述)第三版

第三章 随机数的产生
3.5 产生任意均值与方差的正态分布的一个随机数
参考技术A 楼上老兄能否把你的《常用算法程序集(c语言描述)第三版》发我一份,谢谢了~
wrymax@qq.com
参考技术B #include <stdio.h>

//产生任意均值与方差的正态分布的随机数
// double u μ 正态分布的均值
// double g σ2=g2 正态分布的方差
// double * r 指向随机数种子
// double grn1() 返回一个均值u 方差g2 正态分布 的随机数

double grn1(double u,double g,double * r)
int i,m;
double s,w,v,t;
s=65536.0; w=2053.0; v=13849.0;
t=0.0;
for (i=1; i<=12; i++)
*r=(*r)*w+v; m=(int)(*r/s);
*r=*r-m*s; t=t+(*r)/s;

t=u+g*(t-6.0);
return(t);


int main()

double u,g,r;
r=5.0;u=1.0;g=1.5;
printf("\n");
for(int i=0;i<=9;i++)
for(int j=0;j<=4;j++)
printf("%10.7lf ", grn1(u,g,&r));

printf("\n");

printf("\n");


运行结果:

1.2386322 -1.1779938 0.5128021 1.9047699 1.5916595
1.1672211 -0.7747955 1.8593597 1.6634369 1.7311859
0.6563568 -1.4673004 -0.0460358 -0.9860992 0.3062592
3.9247894 -0.5367584 3.5153656 -0.3250885 0.0356293
0.1912689 0.2355804 0.2623138 0.3652191 3.6380463
1.1745453 2.0684662 0.4135590 2.3035736 4.8322601
-0.9066315 0.1806488 2.1878510 2.2087250 1.8370209
-0.3335114 3.2908783 0.8039398 1.2994232 -1.1289215
4.1126556 0.6179047 0.4805756 0.7944183 -1.3468170
1.6506195 2.3804779 2.4365082 1.9124603 0.9020844

参考 常用算法程序集(c语言描述)第三版

第三章 随机数的产生

以上是关于编程:如何生成一组随机数字?的主要内容,如果未能解决你的问题,请参考以下文章

php生成三个数字并且任意两个不重复

随机生成一组不重复的随机数组

请教编程高手,如何产生从-5到5的一组正态分布的随机数

用C语言编程0—1的一组随机数

.net 下用C#产生一个永不重复10位随机数

生成一组随机 x,y,z 数字,它们之间的差异最小,在定义的限制之间