`
mlzboy
  • 浏览: 724854 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

1-100内产生3个不重复的随机数

阅读更多
Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BerkeleyDBDemo
{
    
class Class16
    {
        
static void Main(string[] args)   
        {   
            DateTime d1 
= System.DateTime.Now;   
            
int[] list1 = GetRandom1(11000005000);   
            TimeSpan dd1 
= System.DateTime.Now - d1;   
  
            DateTime d2 
= System.DateTime.Now;   
            
int[] list2 = GetRandom2(1100000*1005000);   
            TimeSpan dd2 
= System.DateTime.Now - d2;   
  
            
//foreach (int i in list1)   
            
//    Console.Write("{0},", i);   
            
//foreach (int ii in list2)   
            
//    Console.Write("{0},", ii);   
  
            Console.WriteLine(
"第一种方法,1-100000    里取5000个用时:{0}", dd1.TotalMilliseconds);   
            Console.WriteLine(
"第二种方法,1-100000*100里取5000个用时:{0}", dd2.TotalMilliseconds);   
  
            Console.WriteLine(
"判断第二种方法里是否有重复数,如果是5000就是没有重复的:{0}",RemoveDup(list2).Length);   
            Console.WriteLine(
"my test=================");
            
int[] a=GetRandom1(110099);
            Array.Sort(a);
            
foreach(var i in a)
                Console.WriteLine(i);
            
            Console.ReadKey();   
  
        }   
  
        
public static int[] RemoveDup(int[] myData)   
        {   
            
if (myData.Length > 0)   
            {   
                Array.Sort(myData);   
                
int size = 1;   
                
for (int i = 1; i < myData.Length; i++)   
                    
if (myData[i] != myData[i - 1])   
                        size
++;   
                
int[] myTempData = new int[size];   
                
int j = 0;   
                myTempData[j
++= myData[0];   
                
for (int i = 1; i < myData.Length; i++)   
                    
if (myData[i] != myData[i - 1])   
                        myTempData[j
++= myData[i];   
                
return myTempData;   
            }   
            
return myData;   
        }     
  
  
        
//方法1   
        public static int[] GetRandom1(int minValue, int maxValue, int count)   
        {   
  
            Random rnd 
= new Random();   
            
int length = maxValue - minValue + 1;   
            
byte[] keys = new byte[length];   
            rnd.NextBytes(keys);   
            
int[] items = new int[length];   
            
for (int i = 0; i < length; i++)   
            {   
                items[i] 
= i + minValue;   
            }   
            Array.Sort(keys, items);   
            
int[] result = new int[count];   
            Array.Copy(items, result, count);   
            
return result;   
  
        }   
  
        
//方法2   
        public static int[] GetRandom2(int minValue, int maxValue, int count)   
        {   
            
int[] intList = new int[maxValue];   
            
for (int i = 0; i < maxValue; i++)   
            {   
                intList[i] 
= i + minValue;   
            }   
            
int[] intRet = new int[count];   
            
int n = maxValue;   
            Random rand 
= new Random();   
            
for (int i = 0; i < count; i++)   
            {   
                
int index = rand.Next(0, n);   
                intRet[i] 
= intList[index];   
                intList[index] 
= intList[--n];   
            }   
  
            
return intRet;   
        }   
  
    }   

    }
在博问中TerryLee ,丁学给出了自己的答案,但是最后还是google了三番,觉得上面这两种方法是比较不错的实现,最近懒了,发现如果代码绕的弯太大,总想有没有简洁的方法实现,如果太复杂,我就会用最折衷的方法就去实现,代码写的太复杂日后也看不懂, 注意这里没有处理这种情况,当想在1-10中取出11个不重复的数时的情况,这种情况显示会抛出异常,在自己使用时加个异常处理或是判断
分享到:
评论

相关推荐

    易语言取不重复随机数

    在易语言中,生成不重复随机数是一项常见的需求,特别是在游戏开发、数据分析或者算法设计等场景。本文将深入探讨如何在易语言中实现取不重复随机数的功能。 首先,我们需要了解易语言中的随机数生成函数。在易语言...

    js超简单实用随机产生1-100个数字不重复

    在JavaScript编程语言中,生成1到100之间不重复的随机数字是一项常见的需求,尤其在游戏、模拟或数据测试等场景中。...不过,上述解释已经涵盖了生成1到100之间不重复随机数的基本思路和常见实现方式。

    VB生成不重复的随机数

    根据提供的标题、描述以及部分代码内容,我们可以总结出在Visual Basic (简称VB)环境中生成不重复随机数的主要方法。此技术常用于各种场景,比如彩票系统、抽奖程序或需要无重复随机选择的应用。 ### 一、基本原理 ...

    产生1到N的不重复随机数

    在编程领域,生成1到N的不重复随机数是一个常见的需求,这在各种场景中都有应用,例如模拟抽奖、创建随机测试数据或者在游戏中分配资源等。这个任务涉及到两个主要的知识点:随机数生成和数组去重。 首先,我们来...

    易语言取不重复随机数.rar

    在“易语言取不重复随机数.rar”这个压缩包中,我们可以找到关于如何在易语言中生成不重复随机数的相关教程或源代码。 在编程中,生成随机数是一项常见的任务,特别是在游戏、模拟、加密等领域。而在易语言中,生成...

    取不重复随机数.rar

    "取不重复随机数.rar"这个文件可能包含了一个易语言(EasyLanguage)的程序或者示例,用于解决这个问题。易语言是一种简洁、直观的中文编程语言,旨在降低编程门槛,让更多人能够进行计算机编程。 生成不重复随机数...

    产生1-10不重复的随机数

    '产生1-10不重复的随机数 '想法: '随机1-10这十个数,不想每次都是从一到十这样随机,而是可以从任意一个数到十, '然后在循环回来到这个数,这样随机。从五开始的话,就是随机5-10,然后1-4这样随机

    C#产生不重复的随机数

    第三种方法涉及递归函数,用于生成指定范围内的不重复随机数。核心逻辑如下: 1. 初始化一个`Random`实例,用于生成随机数。 2. 创建一个整型数组`arrNum`,用于存储生成的随机数。 3. 在循环中,调用`getNum`函数...

    产生1-100之间的100个不重复的随机数

    public boolean hasNumber(int[] array,int num)

    VB产生不重复的随机数

    词典对象在VBScript中提供了一个哈希表结构,允许我们存储键值对,它具有检查键是否已存在的功能,这正是我们解决不重复随机数问题的关键。 首先,我们需要引入`Scripting`命名空间,以使用FSO对象: ```vb Dim ...

    java生成十个不重复的随机数

    System.out.println("生成的十个不重复随机数为:"); for (int number : uniqueNumbers) { System.out.println(number); } } } ``` 在这个代码中,我们创建了一个`HashSet`来存储生成的随机数,然后在一个循环...

    产生20个不重复的随机数的代码

    在IT领域,生成不重复的随机数序列是一个常见的需求,尤其是在需要进行随机抽样、数据模拟或游戏开发等场景中。下面将详细解析如何通过编程实现这一目标,并深入探讨其背后的算法逻辑和技术要点。 ### 核心知识点:...

    自己写的java产生不重复随机数

    直接运行main即可,参数为数字范围 比如10 运行后会输出9,3,0,7,2,8,4,1,5,6,

    java产生不重复的随机数

    java代码产生不重复的随机数,有用处,可以参考!

    产生不重复随机数算法

    本文将深入探讨一种在Java中实现的高效算法,该算法能够生成指定范围内的不重复随机数数组,特别适用于随机组题等应用场景。 ### 核心知识点解析 #### 1. 算法原理 算法的核心思想是首先创建一个包含指定范围内...

    hashset产生不重复随机数

    利用hashset产生不重复随机数的函数,附含测试数据; 调用方法 int[] arr=noDup(max,num),max为最大的数,num为要产生的随机数个数

    生成不重复随机数的算法

    ### 生成不重复随机数的算法 在许多应用领域中,比如在线考试系统、游戏开发或是数据处理等场景,生成不重复的随机数是一项非常重要的技术。本文将详细介绍几种不同的方法来实现这一功能,并通过具体的Java代码示例...

    Java 产生不重复随机数四种方法

    在Java编程中,生成不重复随机数是一项常见的需求,特别是在模拟抽奖、随机选取样本或创建唯一标识符等场景。本文将详细介绍四种不同的方法来实现这一功能。 ### 方法一:使用HashSet **HashSet** 是Java集合框架...

    MFC实现产生随机数

    `rand() % 100 + 1`用于生成[1, 100]范围内的随机整数。最后,`SetDlgItemInt`函数用于将生成的随机数显示在具有ID `IDC_SHOW_RANDOM`的静态文本控件上。 如果你在压缩包文件中找到了名为`proc1.exe`的文件,这很...

Global site tag (gtag.js) - Google Analytics