flash中随机产生20-100之间10个不同的数字,然后不能重复地随机取出这十个数字

在一个红绿灯测试试验中,当绿灯过了出现黄灯的时候,开始随机出现一个时间,车在这个规定的时间内行驶得分,一旦超过这个时间,红灯出现,以前的积分都处为0,否则本次积分累计到总分。一个人十次测验,每次使用的行驶距离即为刚才出现的10个数中的一个(当然这个行驶距离是看不见的),分数最大的取胜。

算法的关键是产生十个不同的随机数,并分10次随机取出这10个随机数(10个随机数固定下来以后,每位测试者都使用这十位,但这十个数字出现的次序不能相同) 。

 

需要注意的是,如果从1-10之间来随机产生10个不同的数字是非常困难的,往往等好长时间不能得到结果,所以要随机数范围,将整数部分减去,留下个位数部分的做法比较快。

产生10个不同的随机数AS脚本如下:

var inttemp=0;

int_array=new Array(10);
int_array[1]=Math.round(Math.random()*80+20);
var count=1;
var flags=0;
do{
 inttemp=Math.round(Math.random()*80+20);
 for(i=1;i<=count;i++)
 {
  if(int_array[i]==inttemp)
  {
    flags=1;//标示是否发现重复数字,如发现跳出
     break;
  }
    }
   
    if(flags==0)//没有发现重复数字,则记录下来
    {
    count=count+1;
    int_array[count]=inttemp;  
    }
    flags=0;
  
 
 
 }while(count<=10)

 

随机出去这十个随机数的AS代码如下:

首先随机获取不同的小标,使用这些下标标识不同的数字即可

var k=0;
var flag;
data1=new Array(10); //负责记录十个不同的下表,并在下面输出
data1[1]=Math.round(Math.random()*9+1);
tot=1;//负责记录循环总数
var flag=0;
do{
   gen_data=Math.round(Math.random()*19+1);//主要为防止小范围随机出现同一数的大概率时间发生
   if(gen_data>10)
   gen_data=gen_data-10;//求余也可
   for(tt=1;tt<=tot;tt++)
   {
    if(gen_data==data1[tt])
    {
  flag=1;
     break;
    }
 }
    if(flag==0)
    {
      tot=tot+1;
      data1[tot]=gen_data;
    }
    flag=0;


}while(tot<10);

out1_txt=int_array[data1[1]];
out2_txt=int_array[data1[2]];
out3_txt=int_array[data1[3]];
out4_txt=int_array[data1[4]];
out5_txt=int_array[data1[5]];
out6_txt=int_array[data1[6]];
out7_txt=int_array[data1[7]];
out8_txt=int_array[data1[8]];
out9_txt=int_array[data1[9]];
out10_txt=int_array[data1[10]];
stop();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值