C語言、Java兩種方式下的——規定範圍內不重複隨機數
阿新 • • 發佈:2019-01-22
示例1:C語言版
#include <stdio.h> #include <stdlib.h> #include <time.h> //隨機產生規定個數的不重複數字 int findSame(int *arr, int in, int n); int main() { //設定隨機種子 srand((int)time(0)); int arr[40] = {0}, tmp, length = 0; while(length <= 39) { tmp = (40 * rand()) / RAND_MAX; //第一個下標數直接複製進陣列 if (length == 0) arr[length] = tmp; else { //第二個下標數開始,判斷隨機數是否在陣列已經存在,存在的話跳過,不存在就複製進陣列 if (findSame(arr, tmp, length) == 1) continue; else arr[length] = tmp; } length++; } for (int i = 0; i < 40; i++) printf("%d ", arr[i]); return 0; } int findSame(int *arr, int in, int n) { for (int i = 0; i < n; i++) { if (arr[i] == in) return 1; } return 0; }
import java.util.*; //列印10個不重複的隨機數字1~10 public class NoRepeatNumber { public static void main(String[] args) { Random random = new Random(); int [] nums = new int[10]; List<Integer> mylist = new ArrayList<Integer>(); int n = 10, temp, i = 0; while(mylist.size() < n){ temp = random.nextInt(n) + 1; if (!mylist.contains(temp)) { mylist.add(temp); nums[i] = temp; System.out.print(nums[i] + " "); } } } }
剛開始學習Java,還真是有些不適應,主要體現在庫的使用,我的感覺是如果對庫有深入的瞭解才能寫出高質量的程式碼。