亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java生成6位不重復(fù)隨機(jī)數(shù),求救各位道友

瀏覽:122日期:2023-10-24 13:14:12

問(wèn)題描述

我知道循環(huán)下去沒(méi)有不重復(fù)的~,只能降低重復(fù)率,但是還是得戳一戳~,有沒(méi)有道友來(lái)一波~

問(wèn)題解答

回答1:

我認(rèn)為隨機(jī)的意義在于前后兩次的結(jié)果值不可預(yù)測(cè),推廣說(shuō)就是知道A1 A2 并不能推算出A3這個(gè)意思。你說(shuō)的重復(fù)值的問(wèn)題應(yīng)該從概率的角度來(lái)衡量,如果每個(gè)值獲取的概率都是相等的,就屬于”隨機(jī)“的意思了,兩次結(jié)果重復(fù)不能說(shuō)明這就不夠”隨機(jī)“。

如果一定要嚴(yán)格限定取值不重復(fù),你需要有一個(gè)存儲(chǔ)的地方,而且這個(gè)不重復(fù)也一定有個(gè)時(shí)間或者空間的范圍。

回答2:

以前在CSDN上看到隨機(jī)產(chǎn)生不重復(fù)的數(shù)字的算法:

int startArray[] = {0,1,2,3,4,5,6,7,8,9};//seed array int N = 6;//隨機(jī)數(shù)個(gè)數(shù) int resultArray[] = new int [N];//結(jié)果存放在里面 for(int i = 0; i < N; i++) {int seed = random(0, startArray.length - i);//從剩下的隨機(jī)數(shù)里生成resultArray[i] = startArray[seed];//賦值給結(jié)果數(shù)組startArray[seed] = startArray[startArray.length - i - 1];//把隨機(jī)數(shù)產(chǎn)生過(guò)的位置替換為未被選中的值。 } 回答3:

一個(gè)笨辦法就是直接初始化數(shù)組,每個(gè)數(shù)字對(duì)號(hào)入座,然后隨機(jī)挑選,第一次的結(jié)果與倒數(shù)第一位交換,第二次的結(jié)果與倒數(shù)第二位交換,當(dāng)然交換后,下次挑隨機(jī)數(shù)的范圍也會(huì)相應(yīng)減一。

至于效率如何,樓主可以執(zhí)行下。

public static void main(String[] args) { // 初始化數(shù)組 int[] arr = new int[1000000]; for (int i = 0; i < arr.length; i++) {arr[i] = i; } int randomCount = 1000; // 要生成多少個(gè)隨機(jī)數(shù) Random random = new Random(); // 隨機(jī)數(shù)生成器 long startTime = System.currentTimeMillis(); // 計(jì)時(shí) for (int i = 0; i < randomCount; i++) {// 隨機(jī)挑選int pickIndex = random.nextInt(arr.length - i);// 交換int t = arr[pickIndex];arr[pickIndex] = arr[arr.length - 1 - i];arr[arr.length - 1 - i] = t; } System.out.println('take time: ' + (System.currentTimeMillis() - startTime) + ' ms'); // 輸出結(jié)果(超過(guò)一萬(wàn)就不輸出了,直接看耗時(shí)) if (randomCount < 10000) {for (int i = 0; i < randomCount; i++) { System.out.printf('%06d ', arr[arr.length - i - 1]); if (i % 40 == 39) {System.out.println(); }} }}回答4:

生命周期長(zhǎng)的話(huà),十萬(wàn)還是很容易就用完的.用完之后再怎么生成也是重復(fù)的.

最簡(jiǎn)單的, Math.random()*10_0000,然后轉(zhuǎn)int.無(wú)法保證不重復(fù)

遞增,類(lèi)似于mysql的主鍵遞增.從1開(kāi)始,不足六位的話(huà),前面用0補(bǔ)足

高級(jí)點(diǎn).六位數(shù)可以用各種影響因素來(lái)進(jìn)行組合,當(dāng)然這個(gè)位數(shù)比較短,可考慮的因素不是很多.

最后,給一個(gè)參考鏈接,分布式系統(tǒng)ID生成. 這個(gè)可能跟你的問(wèn)題沒(méi)有關(guān)系,但是也有一些參考性.

回答5:

ThreadLocalRandom.current().ints(0, 100).distinct().limit(6).forEach(System.out::println);

0到100是范圍,6是個(gè)數(shù)。更重要的是線(xiàn)程安全。

標(biāo)簽: java
主站蜘蛛池模板: 欧美精品毛片 | 在线 中文字幕 日韩 欧美 | 成人亚洲国产综合精品91 | 另类亚洲视频 | 中文无码日韩欧免费视频 | 牛牛本精品99久久精品88m | 99re5久久在热线播放 | 国产日韩精品一区二区在线观看 | 国内精品伊人久久久影视 | 欧美一区二区三区在线视频 | 国产高清一| 国产一级二级三级视频 | 精品国产三级a∨在线观看 精品国产三级a在线观看 | 国产成人mv在线观看入口视频 | 一级做a爰片性色毛片视频图片 | 欧美黑人巨大最猛性xxxxx | 国产东北色老头老太性视频 | 伊人365影院| 久久精品一区二区三区不卡牛牛 | 色老头一区二区三区在线观看 | 男人的天堂久久精品激情 | 最新主播福利视频在线观看 | 久久一日本道色综合久久m 久久伊人成人网 | 成人国产精品久久久免费 | 国产婷婷成人久久av免费高清 | 欧美一级在线看 | 久久免费99精品久久久久久 | 日美三级| 久污 | 国产精品密蕾丝视频 | 亚洲高清一区二区三区久久 | 国产一级特黄一级毛片 | 2020国产微拍精品一区二区 | 久久综合久久88 | 欧美一区二区三区日韩免费播 | 欧美刺激午夜性久久久久久久 | 久久精品在现线观看免费15 | 欧美三级欧美成人高清www | 中文字幕精品一区二区精品 | 欧美精品成人一区二区在线观看 | 久久免费精品国产72精品剧情 |