當前位置:首頁 » 編程語言 » java隨機數不重復

java隨機數不重復

發布時間: 2022-05-10 22:01:33

A. java中如何用random函數產生不重復的隨機數

廢話不多說直接上代碼!
import java.util.ArrayList;
import java.util.Random;
public class Test {
public static void main(String[] args) {
// 生成 [0-n) 個不重復的隨機數
// list 用來保存這些隨機數
ArrayList list = new ArrayList();
int n = 10;
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);
}
System.out.println(list);
}
}

B. java如何生成一組隨機的不重復的數列

思路:

0)、把從min到max的可能出現的數字全部放進一個候選List;
1)、隨機生成索引index(0 <= index <= (list.size()-1));
2)、根據index從List中取出一個數,list.get(index),並移除這個元素;

importjava.util.ArrayList;importjava.util.List;importjava.util.Random;publicclassMyRandom{

/**
*根據min和max隨機生成一個范圍在[min,max]的隨機數,包括min和max
*@parammin
*@parammax
*@returnint
*/
publicintgetRandom(intmin,intmax){
Randomrandom=newRandom();
returnrandom.nextInt(max-min+1)+min;
}

/**
*根據min和max隨機生成count個不重復的隨機數組
*@parammin
*@parammax
*@paramcount
*@returnint[]
*/
publicint[]getRandoms(intmin,intmax,intcount){
int[]randoms=newint[count];
List<Integer>listRandom=newArrayList<Integer>();

if(count>(max-min+1)){
returnnull;
}
//將所有的可能出現的數字放進候選list
for(inti=min;i<=max;i++){
listRandom.add(i);
}
//從候選list中取出放入數組,已經被選中的就從這個list中移除
for(inti=0;i<count;i++){
intindex=getRandom(0,listRandom.size()-1);
randoms[i]=listRandom.get(index);
listRandom.remove(index);
}

returnrandoms;
}
}

C. JAVA中怎樣實現數組中隨機數不重復

可以參考下面的代碼:

public static void main(String[] args) {

int s = -1;

int a[] = new int[100];

int i = 0;

while (i < 100) {

s = (int) (Math.random() * 100 + 1);

for (int j = 0; j < 100; j++) {

if (a[j] == s) {

break;

} else if (j == i) {

a[i] = s;

i++;

break;

}

}

}

}

(3)java隨機數不重復擴展閱讀:

java參考函數

max(x,y) 返回 x 和 y 之間較大的數

min(x,y) 返回 x 和 y 之間較小的數

pow(x,y) 返回 y^x 的值

random() 返回位於 0 到 1 之間的隨機函數

round(x) 四舍五進後與整

sin(x) 返回數字的正弦值

sqrt(x) 返回數字的平方根

tan(x) 返回一個角度的正切值

toSource() 顯示對象的流代碼

valueOf() 返回數教對象的本初值

D. java中怎麼得到有10個不重復的隨機的元素的整型數組

最直觀的就是:生成一個隨機數放入數組,放入前和數組中所有元素比較,數組中沒有加入數組,有的話再生成再比較。當數組元素達到10個是停止生成隨機數。

E. java怎麼產生不會重復的隨機數

//產生20個不重復隨機數
publicstaticvoidmain(String[]args){
booleantag=true;
List<Integer>list=newArrayList<>();
for(inti=0;i<20;i++){
intv=(int)(Math.random()*100+1);
for(Integerinteger:list){
if(integer==v){
tag=false;
}
}
if(tag){
list.add(v);
}
}

for(Integerinteger:list){
System.out.println(integer);
}
}

F. 如何讓JAVA生成不重復隨機數

一個不錯的演算法,很簡單,但有效。不過如果范圍比較大,則佔用內存大,就不推薦使用了。個人感覺1000個以內的就可以考慮。這東西也許你早就知道了,但我依然驚嘆演算法的力量。看代碼 import java.util.*;/** * 生成不重復隨機數的一種演算法。***/ public class T { public static void main(String args) { // 種子你可以隨意生成,但不能重復 int seed = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int ranArr = new int; Random ran = new Random(); // 數量你可以自己定義。 for (int i = 0; i seed.length; i++) { // 得到一個位置 int j = ran.nextInt(seed.length - i); // 得到那個位置的數值 ranArr[i] = seed[j]; // 將最後一個未用的數字放到這里 seed[j] = seed[seed.length - 1 - i];} System.out.println("ranArr:" + Arrays.toString(ranArr));}} 一個運行結果

G. java如何生成12位永遠不重復的數字

Calendar calendar = Calendar.getInstance();

System.out.println("現在:"+calendar.getTime().getTime());

calendar.add(Calendar.YEAR, 10);

System.out.println("10年後:"+calendar.getTime().getTime());

時間戳高並發還是會有重復的,你應該每獲取一次加1的方法生成。用鎖對象或者把方法聲明為synchronized保證並發也不會重復。如果有用資料庫,也可以用資料庫提供的sequence來幫你生成。

(7)java隨機數不重復擴展閱讀:

當編輯並運行一個Java程序時,需要同時涉及到這四種方面。使用文字編輯軟體(例如記事本、寫字板、UltraEdit等)或集成開發環境(Eclipse、MyEclipse等)在Java源文件中定義不同的類;

通過調用類(這些類實現了Java API)中的方法來訪問資源系統,把源文件編譯生成一種二進制中間碼,存儲在class文件中,然後再通過運行與操作系統平台環境相對應的Java虛擬機來運行class文件,執行編譯產生的位元組碼,調用class文件中實現的方法來滿足程序的Java API調用。

H. Java如何讓隨機數不重復

1.JAVA中生成隨機數的方式 1、在j2se中使用Math.random()令系統隨機選取一個0~1之間的double類型小數,將其乘以一個數,比如25,就能得到一個0~25范圍內的隨機數,這個在j2me中沒有...
2.隨機給定范圍內N個不重復的數 1、方法一:最簡單最易理解的兩重循環去重 /** * 隨機指定范圍內N個不重復的數 * 最簡單最基本的方法 * @param min 指定范圍最小值 * @param max ...

I. random 怎麼實現隨機數不重復方法 java

java中實現隨機數不重復主要思想是使用hashset來保存每個生成的數據,因為set集合本身內部機制實現了不保存相同的數據,代碼如下:

/**
*隨機指定范圍內N個不重復的數
*利用HashSet的特徵,只能存放不同的值
*@parammin指定范圍最小值
*@parammax指定范圍最大值
*@paramn隨機數個數
*@paramHashSet<Integer>set隨機數結果集
*/
publicstaticvoidrandomSet(intmin,intmax,intn,HashSet<Integer>set){
if(n>(max-min+1)||max<min){
return;
}
for(inti=0;i<n;i++){
//調用Math.random()方法
intnum=(int)(Math.random()*(max-min))+min;
set.add(num);//將不同的數存入HashSet中
}
intsetSize=set.size();
//如果存入的數小於指定生成的個數,則調用遞歸再生成剩餘個數的隨機數,如此循環,直到達到指定大小
if(setSize<n){
randomSet(min,max,n-setSize,set);//遞歸
}
}

J. JAVA怎麼生成不重復的隨機數

沒辦法,只好把生成的隨機數放到set中,以後每次取隨機數,判一下set,有的話,重新生成。

熱點內容
術後解壓 發布:2025-07-14 16:39:47 瀏覽:659
手機版我的世界怎麼輸入伺服器ip 發布:2025-07-14 16:25:21 瀏覽:721
pythonsysstdout 發布:2025-07-14 16:15:29 瀏覽:196
ef資料庫更新模型 發布:2025-07-14 16:14:05 瀏覽:411
少兒編程教育平台 發布:2025-07-14 16:13:54 瀏覽:301
相關存儲格式圖片 發布:2025-07-14 16:13:50 瀏覽:144
搭建酒店伺服器 發布:2025-07-14 16:13:49 瀏覽:133
下載pythonmysqldb 發布:2025-07-14 16:05:43 瀏覽:977
生化危機5配置要求怎麼樣 發布:2025-07-14 15:38:56 瀏覽:301
蘋果電話為什麼打不開密碼 發布:2025-07-14 15:33:45 瀏覽:45