生成n个不同的随机数,且随机数区间为[0,n)

  • 生成n个不同的随机数,且随机数区间为[0,n)
package cn.hgnulb.utils;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class TestRandom {
    public static void main(String[] args) {
        System.out.println(getDiffNO(10));
    }

    /**
     * 生成n个不同的随机数,且随机数区间为[0,n)
     *
     * @param n 生成随机数的个数
     * @return 返回生成 [0-n) 个不重复的随机数,用 list 来保存这些随机数
     */
    public static List<Integer> getDiffNO(int n) {
        // list 用来保存这些随机数
        List<Integer> list = new ArrayList<Integer>();
        Random rand = new Random();
        boolean[] bool = new boolean[n];
        int num = 0;
        for (int i = 0; i < n; i++) {
            do {
                // 如果产生的数相同则继续循环
                num = rand.nextInt(n);
            } while (bool[num]);
            bool[num] = true;
            list.add(num);
        }
        return list;
    }
}

原文地址:https://www.cnblogs.com/hglibin/p/10462620.html

时间: 2024-08-25 15:58:26

生成n个不同的随机数,且随机数区间为[0,n)的相关文章

shell 生成指定范围随机数与随机字符串 .

shell 生成指定范围随机数与随机字符串 分类:             shell              2014-04-22 22:17     20902人阅读     评论(5)     收藏     举报 shellrandomurandomuuidlinux shell 生成指定范围随机数与随机字符串 1.使用系统的 $RANDOM 变量 [plain] view plaincopyprint? [email protected]:~$ echo $RANDOM 17617 [

Linux Shell 生成随机数和随机字符串

日常生活中,会经常用到随机数,使用场景非常广泛,例如买彩票.丢骰子.抽签.年会抽奖等. Shell 下如何生成随机数呢,米扑博客特意写了本文,总结 Linux Shell 产生随机数的多种方法. 本文原文转自米扑博客:Linux Shell 生成随机数和随机字符串 计算机产生的的只是"伪随机数",不会产生绝对的随机数(是一种理想随机数).实际上,伪随机数和理想随机数也是相对的概念,例如伪随机数在1万万亿亿亿年内也无法重复,算是理想随机数么? 伪随机数在大量重现时也并不一定保持唯一,但一

生成指定范围的一组随机数并求平均值

Math.random()是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值,是Java语言常用代码. 随机数生成20~90之间的数值,并求平均数: public class Random01 { public static void main(String[] args) { int len = 5; int sum = 0; int[] arr = new int[len]; for (int i = 0; i < len; i++) { arr[i] = (int

生成N个不同的随机数(C++,范围0~N-1)

做项目的过程往往具有随机选取等过程.此笔记主要给出了随机生成N个不同的随机数的两种方法,然后简单的介绍了C++中随机数主要用到的函数srand,rand和time.最后给出了一个简单的例子,即从一个含有N张图片的文件夹中随机选取K张图片存入另外一个文件夹. 一:产生N个不同随机数的方法 #include <stdio.h> #include <stdlib.h> #include<time.h> #define N 20 #define K 10 void swap(i

js生成某个范围内的随机数

根据random方法,Math.random()方法返回的是0到1的随机数(不包含0和1): ? 1 2 3 4 5 6 7 8 //生成k个m到n的随机数,返回数组     function Temp(m,n,k) {         var all = new Array();         for (var i = 0; i < k; i++) {             all[i] = Math.floor(Math.random()*(n-m) + m); //Math.floor

bash的RANDOM变量生成的是真正的随机数吗

static void seedrand () { struct timeval tv; gettimeofday (&tv, NULL); sbrand (tv.tv_sec ^ tv.tv_usec ^ getpid ()); } 上述是bash中生成随机数的代码,处理是非常的简单,秒 (tv.tv_sec) 和微秒 (tv.tv_usec) 和进程 ID 的位进行异或操作来生成随机数. 由此生成的RANDOM变量是伪随机数,而且和伪随机数生成器相比,是采用非常简单的算法生成的. 译至:ht

shell生成100个6位随机数

shell生成100个6位随机数的方法很多:下面写一个,脚本如下: 执行的结果

php生成16位只有数字随机数

php生成16位只有数字随机数 分享一个php生成16位随机数的代码,php生成随机数的二种方法.方法1, <?php $a = mt_rand(10000000,99999999); $b = mt_rand(10000000,99999999); echo $a.$b; 方法2: <?php $a = range(0,9); for($i=0;$i<16;$i++){ $b[] = array_rand($a); } // www.yuju100.com var_dump(join(

[C++基础]随机数,随机种子数

#include <stdlib.h> #include <iostream> #include <ctime> using namespace std; void Test() { int ran_num = 0; cout<<"不指定seed, "; for(int i=0; i<10;i++) { ran_num = rand()%6; cout<<ran_num<<" "; }//