关于随机数无重复填充数组问题

前言:

    有一题:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。

之前一直做不出结果,认为是中间循环太多,陷入无限等待呢?!后来发现是Random函数理解有误。

 

解析:

     代码演示:

    // Description: 演示无重复填充数组随机数问题

    
// CopyRight: http://www.cnblogs.com/yangmingming

    
// Notes: 选取1-100数字填充,具有int[100]

    
class Program
    {
         
static int[] arrInt = new int[100];
        
//功能函数
         public static bool ExistAnyNumber(int ran, int count)
         {
             
for (int i = 0; i < count; i++)
             {
                 
if (ran == arrInt[i])
                     
return true;
             }
             
return false;

 
         }
         
static void Main(string[] args)
        {
           
            Random a 
= new Random();
            
            
for (int i = 0; i < 100; i++)
            {
                
//初始获取1-100随机数的方法
                int ran = a.Next(1100);

                
//修正后的方法
                int ran = a.Next(1100);
                
while (ExistAnyNumber(ran, i))
                {
                    
// ran = a.Next(1, 100);
                    ran = a.Next(1101);
                }
                arrInt[i] 
= ran;

            }
            
for (int i = 0; i < 100; i++)
                Console.WriteLine(
"{0} ",arrInt [i]);
           
        }
    }


 是啊,原来问题出在了如此小的细节上,这才发现“多总结,多思考,多注意细节!”是多么的重要啊。

 

转载于:https://www.cnblogs.com/yangmingming/archive/2010/04/01/1702319.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值