128 隨機數索引

2021-09-24 16:11:05 字數 1169 閱讀 7354

題目描述:

給定乙個可能含有重複元素的整數陣列,要求隨機輸出給定的數字的索引。 您可以假設給定的數字一定存在於陣列中。

注意:陣列大小可能非常大。 使用太多額外空間的解決方案將不會通過測試。

示例:int nums = new int ;

solution solution = new solution(nums);

// pick(3) 應該返回索引 2,3 或者 4。每個索引的返回概率應該相等。

solution.pick(3);

// pick(1) 應該返回 0。因為只有nums[0]等於1。

solution.pick(1);

用這種方法比較簡單,首先將值為target的下標放入到list中,然後我們使用random函式取出索引

**:

class solution 

public int pick(int target)

} random random = new random();

return list.get(random.nextint(list.size()));}}

這個**我不是很清楚為什麼可以通過呢,感覺沒有隨機啊

class solution 

public int pick(int target)

} while (n[x++] != target);

return x - 1;}}

可以看看這個

單元素的蓄水池取樣

class solution

public int pick(int target)

{random r = new random();

int result = 0;

int cnt = 0;

for(int i=0; i蓄水池抽樣及實現

不得不說這個演算法對於大量的資料來說只使用o(n)的時間複雜度真是很好了。

學習了

398 隨機數索引

題目描述 給定乙個可能含有重複元素的整數陣列,要求隨機輸出給定的數字的索引。您可以假設給定的數字一定存在於陣列中。注意 陣列大小可能非常大。使用太多額外空間的解決方案將不會通過測試。示例 int nums new int solution solution new solution nums pic...

隨機數 偽隨機數

隨機數 偽隨機數 rand函式在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次呼叫rand函式生成的偽隨機數序列都是一樣的。srand unsigned seed 通過引數seed改變系統提供的種子值,從而可以使得每次呼...

隨機數生成 偽隨機數和真隨機數

c語言隨機數的生成,很隨機,又不隨機,比如像下面的程式 c語言生成隨機數的函式在stdlib.h庫中 include includeint main return 0 上面的 經過執行生成了 41 18467 6334 26500但是無論執行多好遍結果都是一樣的,隨機數並不隨機。這是因為rand 函...