產生個N個不重複隨機數數的快速演算法
虛擬碼
int startArray[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};//seed array
int length = sizeof(startArray)/sizeof(int); int N = 10;//隨機數個數 int resultArray[] = new int [10];//結果存放在裡面 for(int i = 0; i < N; i++) { int seed = rand()/(length-1-i - 0 + 1)+0; //(生成指定範圍的隨機下標)從剩下的隨機數裡生成 resultArray[i] = startArray[seed]; //賦值給結果陣列 startArray[seed] = startArray[length - i - 1];//把隨機數產生過的位置替換為未被選中的值。 }
相關推薦
產生個N個不重複隨機數數的快速演算法
虛擬碼int startArray[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};//seed arrayint length = sizeof(startArray)/sizeof(int); int N = 10;//隨
已知一個數組int[98],該數組裡面儲存了0~99共100個數字中的98個,數字不重複,請用演算法算出0~99中缺少的2個數字是哪兩個?
public class Test24 {public static void main(String[] args) {int[] num=in();//生成陣列noNumber(num);//判斷不同的數} public static int[] in() { int[] array = new
產生一組不重複隨機數的高效演算法
需要從 0 到 n 之間選 k 個不重複的陣列成一個序列。 最早我想的是用一個輔助陣列記錄之前已經產生的隨機數,如果當前產生的隨機數已經出現過就再重新隨機。 顯然這樣的實現效率是很低的,設想從10000個數中隨機產生10000個數的序列,當前面9999個數已
[Java]不重複隨機數生成簡易演算法
方法一 通過單個數組簡易實現不重複隨機數生成,先上原始碼。 /** * 獲取隨機陣列 * @param 源陣列 * @param size 目標陣列大小 * @return 隨機陣列 */ public static int[] getRandomRe
PHP 產生m個n範圍內的不重複隨機數
PHP高效產生m個n範圍內的不重複隨機數(m<=n) 方法一: <?php for ($i=1;$i<=52;$i++) { $arr[]= $i; } shuffle($arr); print_r($arr); 方法二: 注:在《 Pro
隨機產生10個0-100之間的隨機數,將不重複的數存入到list中,最終將結果輸出在控制檯上(2018-8-7)
package com.sj.zy; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; public class Zy02 { public static void
PHP產生不重複隨機數的5個方法總結
方法一: <?php $numbers = range (1,50); //shuffle 將陣列順序隨即打亂 shuffle ($numbers); //array_slice 取該陣列中的某一段 $num=6; $result = a
Python 產生特定範圍內不重複多個隨機數的兩種方法
在近期進行的一個實驗中,需要將資料按一定比例隨機分割為兩個部分。這一問題的核心其實就是產生不重複隨機數的問題。首先想到的遞迴的方法,然後才發現Python中居然已經提供了此方法的函式,可以直接使用。具
從0到n-1中隨機等概率輸出m個不重複的數
題目描述 假設n遠大於m,程式設計實現從0到n-1中隨機等概率的輸出m個不重複的數。 void knuth(int n,int m) { srand((unsigned int)time(0
從陣列中隨機取若干個不重複的數
要求:從 0 ~ 100 中隨機取出十個不重複的 數 思路: 1: 利用陣列,通過Math.random()*(arr.length -1) 然後將取到的數跟陣列最後一個元素交換,將陣列長度減一 下面程式碼中設計到 判斷陣列中是不是有重複元素 我的想法如下,如有錯誤還
java程式碼實現從自然數1到1000中隨機取900個不重複的數並列印
AL筆試有考到,你懂得! 主要用到Set和TreeSet資料結構,TreeSet相對Set多了排序功能,而Random類可以產生隨機數 import java.util.Random; import java.util.Set; import java.util.TreeS
js 生成兩個整數之間不重複的n個隨機整數
偶遇一個js面試題:編寫一個javscript函式 fn,該函式有一個引數 n(數字型別),其返回值是一個數組,該陣列內是 n 個隨機且不重複的整數,且整數取值範圍是 [2, 32]。 如果願意,請先
C語言 習題 輸入n個數,輸出不重複的數及它們的和
難住本小白的一道c語言題目,搞了兩天才出來,不多比比,直接上題 題目:輸入n個整數,輸出不重複整數及它們的和。 //講真,當時那道題,讀了兩遍愣是沒懂······ 此題筆者認為有兩個難點, 1.“如何輸入n個整數”,當按下回車鍵時結束輸入,其中n是不定的,(不能要求先輸入n的值,那樣難度直接
生成N位不重複的隨機數
package com.jack.question.random; import java.util.Arrays; import java.util.Random; /** * @author lvh */ public class RandomArray { /* * 如題,定義一
PHP 產生不重複隨機數的方法(一)
1.首先通過rand()函式獲取一個長度固定的陣列。 例如:$numbers = rand(6,50); 這條語句是可以產生6到50個數字,是按順序排列的。 接著我們需要打亂這個順序,產生45個無序的陣列成一個數組,這時就需要用到php中的shuffle()函式。 例如:s
C#產生一組不重複隨機數的兩種方法
最近在開發專案的過程中,需要產生一些隨機數,如果我們簡單的用C#中的Random.Next方法,很難產生一組少重複的隨機數(當然是偽隨機數),在網上也看了很多方法,貌似也不可行,或者比較複雜。於是,參考網上的一些方法,自己寫了兩個個產生一組偽隨機數的方法。 方法一的程式碼如
用1、2、3、4四個數字組成不重複數字的三位數,能組成多少個?
public static void main(String[] args) { int sum=0; for (int i = 1; i < 5; i++) { for (int j = 1; j < 5; j++) { for (int
分享一個php產生不重複隨機數
public function getrandnum($allsubnum,$rulesubnum) { $arr = array(); function thearr($arr,$allsubnum,$rulesubnum) { if(count($arr)<$rulesubnum){ $th
Java產生不重複隨機數方法
關於生成Java不重複的隨機數: import java.util.*; publicclass Test...{ publicstaticvoid main(String[] args)...{ //生成 [0-n) 個不重複的隨機數 / st 用
輸出4個整數(不重複)的所有排列組合
給定陣列int[] a={1,2,3,4},輸出這四個數的所有排列組合。 答案為: 1 2 3 4,1 2 4 3,1 3 2 4,1 3 4 2,1 4 2 3,1 4 3 2 2 1 3 4,2 1 4 3,2 3 1 4,2 3 4 1,2 4 1