生成4个随机的不同的数字。JAVA语言。 为什么会产生重复的数字? java:如何产生一个不含重复数字的四位随机数

JAVA \u5982\u4f55\u4ea7\u751f\u56db\u4e2a\u4e0d\u76f8\u7b49\u7684\u968f\u673a\u4e2a\u4f4d\u6570

\u6700\u7b80\u5355\u7684\u65b9\u6cd5\u662f\u5c06\u4ea7\u751f\u51fa\u6765\u7684\u6570\u5b57\u653e\u5230\u4e00\u4e2a\u4e0d\u5141\u8bb8\u91cd\u590d\u7684\u961f\u5217\u4e2d\u53bb\uff0c\u8fd9\u6837\u5c31ok\u4e86\uff0c\u6211\u7ed9\u4f60\u7b80\u5355\u7684\u793a\u8303\u4e00\u4e0b\u54c8
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;

public class RandomNumber {
public static void main(String[] args) {
Set set = new HashSet();
Random random = new Random();
while (set.size() < 4) {
set.add(random.nextInt(10));
}
Iterator it = set.iterator();
for(;it.hasNext();){
System.out.println(it.next());
}
}
}
\u7edd\u5bf9\u4e0d\u4f1a\u91cd\u590d\u7684
\u5176\u4ed6\u4eba\u7684\u56de\u7b54\u91cd\u590d\u7684\u53ef\u80fd\u6027\u90fd\u6709

\u4ee3\u7801\u5982\u4e0b\uff1a
import java.util.Random;public class App {// \u968f\u673a\u751f\u6210\u4e00\u4e2a\u6ca1\u6709\u91cd\u590d\u6570\u5b57\u7684\u6570static int random() {Random random = new Random(System.currentTimeMillis());int number = 0;boolean ok = true;do {ok = true;number = random.nextInt(9000) + 1000;int[] digits = {number / 1000 % 10,number / 100 % 10,number / 10 % 10,number % 10};for (int i = 0; i < 4 && ok; i++) {for (int j = i + 1; j < 4; j++) {if (digits[i] == digits[j]) {ok = false;break;}}}} while (!ok);return number;}public static void main(String[] args) {int n = random();System.out.println(n);}}

当然会出现重复的了……既然是随机肯定会有重复值出现。你可以判断一下是否出现过这个值。或者直接把值放进set里面,然后在set的大小为4的时候结束循环,这样就能得到4个不重复的随机数

随机数本身具有不确定性,所以出现四个相同数字也是有可能的

import java.util.Random;
public class GuessNumber {
public static void main(String []args){
Random r=new Random();
int n[]=new int[4];
for(int i=0;i<4;i++){
int Num=r.nextInt(10);
boolean isrep=false;
for(int k=0;k<i-1;k++){
if(n[k]==Num){//说明前面已经有了这个数,不能要
isrep=true;//表示这个数是重复的
break;
}
if(isrep==false){//说明Num不重复
//可以写进数组
n[i]=Num;
}else{//否则是重复的,必须重新产生Num
i--;//i--相当于外层for循环会重新执行一遍

}
}
for(int j=0;j<4;j++){
System.out.print(n[j]);
}
}
}

呵呵,就这么简单,我直接写的,并没有测试,但一定会OK的。

那么楼主的问题出现在那里呢?很明显就是在判断产生的这个数是否与前面的书重复失败了,因为产生的这个数不经要与它的前一个数不同,
而且必须与它前面的所有书都不同,所以判断条件应该是与它前面的所有数惊醒比较,都不同则可以。
所以楼主的判断条件 n[i]!=n[i-1],那么它并不是与前面的所有数不重复的充要条件,而这仅仅只是一个必要条件。

  • 绗8绔 鑿插緥瀹綧alam paya娌圭敯娓愭柊缁熲斾腑鏂扮粺纰抽吀鐩愬缓闅嗗畾閲忓湴闇囧偍灞傛弿...
    绛旓細鐢熸垚鐨缁撴灉涔熸槸鍦伴渿鏁版嵁浣,鍦ㄨ繖涓暟鎹綋閲屽垝鍒嗙殑姣忎竴涓杈瑰舰鏍锋湰閮借褰掍负涓绉嶆垨鍏朵粬鍙緵閫夋嫨鐨勬矇绉浉绫诲瀷銆傜涓娆$瓫閫変腑浣跨敤鐨勫睘鎬(鍥8)鏄敱鎸箙銆佽繛缁т寒搴︺佸捐鍜屾柟浣嶈缁勬垚銆傜粨鏋滄暟鎹綋涓涓嶅悓鐨鏍风偣琚綊绫诲埌鍚勭鍦伴渿鐩镐腑,Malampaya鍦伴渿鏁版嵁浣撴渶鍒濊鍒掑垎涓轰袱涓浉:宀╃鍖哄煙绀佸甫/寮闃旀捣鏂滃潯鍜岀鍚/娼熸箹鐩...
  • 姹囩紪绋嬪簭璁捐鏁版嵁娴佸浘姹傚姪:浠庨敭鐩樹笂杈撳叆涓涓洓浣嶇殑鍗佽繘鍒舵暟,鍦ㄥ睆骞曚笂鏄...
    绛旓細mov cx,4 T1:mov ah,0;鎺ユ敹鏁板瓧 int 16h cmp al,0dh jz ok cmp al,'0';鏁版嵁鏍¢獙 jb T1 cmp al,'9'ja t1 mov ah,0eh ;鏄剧ず鏈夋晥鏁版嵁 int 10h sub al,30h cbw xchg bp,ax mul bx add bp,ax loop T1 ok: ret output:mov bx,4 mov cx,bx here:rol bp,cl mov ax,bp and...
  • 浠庨敭鐩樿緭鍏ヤ竴涓4浣嶄互鍐呯殑10杩涘埗鏁板瓧瀛楃涓,杞崲鎴16杩涘埗褰㈠紡杈撳嚭銆
    绛旓細mov ah,1 ;浠庨敭鐩樻帴鍙椾竴涓瓧绗 int 21h cmp al,CR ;鑻ラ敭鍏ョ殑鏄洖杞,宸茬粡閿叆鐨勬暟瀛涓嶈冻N浣 jz @@ASC_Dec ;杞幓澶勭悊宸茬粡閿叆鐨勬暟瀛 cmp al,KBBack jz @@KB_Back ;鑻ユ槸鍥炵┖閿,閲嶆柊杈撳叆 cmp al,'0' jb @@KBBack ;鑻ヤ綆浜庢暟瀛'0',閲嶆柊杈撳叆 cmp al,'9' ja @@KBBack ;鑻ラ珮浜庢暟瀛'9',閲嶆柊杈撳叆...
  • 濡備綍缂栧啓涓涓眹缂栫▼搴,瑕佹眰鈥滀粠閿洏鎺ユ敹涓涓洓浣嶇殑16杩涘埗鏁,骞跺湪缁堢涓...
    绛旓細璇曠紪鍐欎竴娈电▼搴忥紝瑕佹眰姣旇緝涓や釜瀛楃涓瞫tring1鍜宻tring2鎵鍚瓧绗︽槸鍚︾浉绛夛紝濡傜浉绛夌ず鈥淢ATCH鈥, 鑻涓嶇浉鍚鍒欐樉绀衡淣O MATCH鈥濄傝瘯缂栧啓涓娈电▼搴忥紝瑕佹眰鍦ㄩ暱搴︿负100H瀛楄妭鐨勬暟缁勪腑锛屾壘鍑哄ぇ浜61H鐨勬棤绗﹀彿鏁扮殑涓暟骞跺瓨鍏ュ瓧鑺傚崟鍏僓P涓紝鎵惧嚭灏忎簬2FH鐨勬棤绗﹀彿鏁扮殑涓暟骞跺瓨鍏ュ瓧鑺傚崟鍏僁OWN涓
  • ...鐢宠鐮:1S3J CUCW UH12 PS4F 7JA1 X45K 72DZ UZ9Z
    绛旓細3dsmax2010娉ㄥ唽鏈.rar 1銆侀渶瑕佺敤娉ㄥ唽鏈哄湪鏈湴鎿嶄綔锛屾牴鎹搷浣滅郴缁涓嶅悓锛屼娇鐢32浣嶆垨鑰64浣嶆敞鍐屾満銆2銆佹寜涓嬫敞鍐屾満宸︿笅瑙掔殑鈥淢em Patch鈥濇敞鍏ュ唴瀛樿ˉ涓侊紱3銆佹寜涓嬫敞鍐屾満鐨勨渁ctivation鈥鐢熸垚婵娲荤爜锛4銆佹嫹璐濇縺娲荤爜鍒拌蒋浠舵敞鍐岀獥鍙o紝骞剁偣鍑烩滀笅涓姝モ濆畬鎴愭敞鍐屻
  • 涔斿畨ja_g4c鐞冩満鎽勫儚澶寸殑鍙傛暟
    绛旓細涔斿畨ja_g4c鐞冩満鎽勫儚澶寸殑鍙傛暟涓哄瓨鍌ㄧ紪鐮侊細H.265銆佸儚绱狅細300涓囥佺劍璺濓細4mm銆佸厜鍦堬細F1.2銆傚晢鍝佸悕绉帮細涔斿畨ja-g4c锛屽晢鍝佺紪鍙凤細100023596878锛屽晢鍝佹瘺閲嶏細0.6kg锛屽晢鍝佷骇鍦帮細涓浗澶ч檰褰曞儚鏈鸿繛鎺ワ細涓嶆敮鎸佺‖鐩樺綍鍍忔満杩炴帴锛屾敮鏋讹細澶栨帴鏀灦锛屽瑙嗙被鍨嬶細鍏ㄥ僵澶滆琛ュ厜鐏暟閲忥細4鑷6涓紝閫傜敤闈㈢Н锛40-80銕★紝渚涚綉...
  • 闂: java涓鍒嗘敮璇彞鍜屾櫘閫氱殑if璇彞鏈変粈涔涓嶅悓,鍦ㄤ娇鐢ㄦ椂搴旇娉ㄦ剰浠...
    绛旓細鐢╣cc缂栬瘧鍣紝鐢熸垚姹囩紪浠g爜锛堜笉寮缂栬瘧鍣ㄤ紭鍖栵級.file "shiyan.c".text .globl main .type main, @function main:leal 4(%esp), %ecx andl $-16, %esp pushl -4(%ecx)pushl %ebp movl %esp, %ebp pushl %ecx subl $20, %esp movl $3, -8(%ebp)cmpl $4, -8(%ebp)ja .L2 movl ...
  • 浠庨敭鐩樿緭鍏ヤ竴涓4浣嶄互鍐呯殑10杩涘埗鏁板瓧瀛楃涓,杞崲鎴16杩涘埗褰㈠紡杈撳嚭 姹囩紪...
    绛旓細xor bx,bx mov cl,4 A:mov ah,08h ;杈撳叆璇锋眰浣嗕笉鏄剧ず int 21h cmp al,30h jb L cmp al,39h ja L mov dl,al ;濡傛灉杈撳叆鐨勫瓧绗︽槸鍦0-9涔嬮棿鍒欐樉绀 mov ah,02h int 21h sub al,30h ;灏咥SCII杞负鏁板 xor ah,ah ;鏈楂樹綅娓呴浂 xchg bx,ax ;bx瀛樺叆杈撳叆鐨勬暟锛屾墽琛岃鍛戒护鍒...
  • 6es7400-1ja01-0aa0鍜6es7400-1ja11-0aa0鏈変粈涔堝尯鍒
    绛旓細鏈夌殑妯″潡濡傛ā鎷熼噺杈撳叆/杈撳嚭鏈ㄥ潡SM334 AI4/AO2X8/8浣嶅氨娌℃湁鑷甫璇婃柇鍔熻兘銆備竴鑸浜庢ā鍧楁病鏈夎嚜甯﹁瘖鏂紝娌℃硶鍦ㄨ蒋浠堕噷璁剧疆鑷瘖鏂, 鍙兘鍒╃敤涓嬭浇鏈夊叧鐨勯敊璇鐞嗙粍缁囧潡鍒癈PU涓紝褰撶郴缁熺▼搴忔娴嬪埌涓浜涢敊璇椂锛屾牴鎹敊璇被鍨鐨勪笉鍚锛孋PU璁剧疆涓鸿繘鍏TOP妯″紡鎴栬皟鐢ㄤ竴涓敊璇鐞哋B锛屽涓嶆纭殑CPU鍔熻兘銆佺郴缁熺▼搴忔墽琛...
  • 涔斿畨缃戠粶楂樻竻鏁板瓧鎽勫儚鏈JA-731ERH-T 4MM200涓囧儚绱犳槸浠涔堟剰
    绛旓細鍍忕礌200涓囷紝鐪嬬潃寰堟竻鏅颁箶灏忔浖鏄コ涓绘柟鍗夌殑闂鸿湝锛屼篃鏄悓浜嬶紝鍚屼竴涓幆澧冧笂鐝紝涔樺潗鍚屼竴鐝湴閾侊紝浣忕殑鍦版柟鐩搁殧骞朵笉杩滐紝涔熸槸鐙眳锛屼汉涔熷緢婕備寒锛岃捣鐮佹瘮璧峰コ涓绘洿鏄紑鏀撅紝姣斿澶ф櫄涓婄殑绌跨潃鐭鐭¥鍦ㄥ闈㈡簻杈
  • 扩展阅读:数字随机生成器在线 ... 自动随机选号器 ... 1-100随机数字生成器 ... 复式组数生成器 ... 扫描计数 ... 1到24随机数生成 ... 1到6随机数生成器 ... 表格自动生成随机数字 ... 数字随机生成器 抽签 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网