回答
重複值與隨機值一致。如果你不能重複值,你可以用可能的值創建一個數組,然後從這個數組中隨機地移除一個數字,直到它爲空,但是這個數字比真正的隨機數少。
...或只是洗牌陣列。 – NullUserException
@NullUserExceptionఠ_ఠ這將允許在刪除所有值之前重複執行結果。 – petervaz
希望,這將是有幫助的:
int r = arc4random()%30+30;
使用arc4random()
,它將提供一個良好的隨機數,並且不需要播種。
rand()
每次應用程序運行時都會產生相同的序列,除非您使用唯一值對其進行種子處理。
然後它是一個問題或縮小範圍。一個簡單的解決方案是修改範圍並添加範圍的低端。 (這將導致一個小的偏差,應該是可以接受的。)
例子:
int rangeLow = 31;
int rangeHigh = 60;
int randomNumber = arc4random() % (rangeHigh-rangeLow+1) + rangeLow;
如果你想@ pawan.mangal有一個鏈接到一個很好的發生範圍內的每個號碼只有一次,然後什麼解。
它就像一個魅力。 – Gypsa
代替蘭特(),您可以使用arc4random()
要想從arc4random一個整數值(),從0到X-1,你可以這樣做:
int value = arc4random() % x;
要在x的取值範圍爲1得到一個整數,只需添加1:
int value = (arc4random() % x) + 1;
最後,如果你需要生成一個浮點數,在你的項目中定義的:
#define ARC4RANDOM_MAX 0x100000000'
然後,您可以使用arc4random()來得到一個浮點值(在使用RAND()的雙精度),0和100之間,就像這樣:
double val = floorf(((double)arc4random()/ARC4RANDOM_MAX) * 100.0f);
以爲我可以添加我在許多項目中使用的方法。
- (NSInteger)randomValueBetween:(NSInteger)min and:(NSInteger)max {
return (NSInteger)(min + arc4random_uniform(max + 1);
}
如果我結束了在許多文件中使用它,我通常聲明一個宏作爲
#define RAND_FROM_TO(min,max) (min + arc4random_uniform(max + 1))
例如
NSInteger myInteger = RAND_FROM_TO(31,60) // 31, 32,..., 59, 60
的follwing方法會產生獨特的隨機數的範圍低,你在你的問題中提到high.as一個數組,你需要31之間的隨機數到60,所以會出現在最大29個唯一編號陣列。
-(void)generateRandomUniqueNumberInRange :(int)rangeLow :(int)rangeHigh{
NSMutableArray *unqArray=[[NSMutableArray alloc] init];
int randNum = arc4random() % (rangeHigh-rangeLow+1) + rangeLow;
int counter=0;
while (counter<rangeHigh-rangeLow) {
if (![unqArray containsObject:[NSNumber numberWithInt:randNum]]) {
[unqArray addObject:[NSNumber numberWithInt:randNum]];
counter++;
}else{
randNum = arc4random() % (rangeHigh-rangeLow+1) + rangeLow;
}
}
NSLog(@"UNIQUE ARRAY %@",unqArray);
}
- 1. 隨機生成唯一整數C++
- 2. 在C++的多維數組中生成唯一的隨機數
- 3. 生成隨機,唯一的值C#
- 4. 在數組中生成唯一的隨機數C++
- 5. 如何在c中生成唯一的隨機數字#
- 6. 生成唯一的隨機數
- 7. 生成唯一的隨機數
- 8. 關於生成唯一的隨機數
- 9. 生成唯一的隨機數字JAVA
- 10. 生成唯一的多個隨機數
- 11. 生成8位唯一隨機數
- 12. 生成唯一隨機數列表
- 13. C#中的隨機數生成器 - 唯一值
- 14. 在Java中生成一組唯一的隨機數
- 15. 生成要存儲在數據庫中的唯一隨機數
- 16. 隨機和唯一的子集生成
- 17. Laravel:隨機生成的唯一令牌
- 18. 在Visual Basic中生成三個唯一的隨機數?
- 19. 如何在PHP中生成唯一的隨機數
- 20. 在Java中生成唯一隨機數的更好方法
- 21. 在javascript中生成7個唯一的隨機數字
- 22. 在c中生成整數隨機數#
- 23. C++在函數中生成隨機數
- 24. C#隨機數生成器與唯一編號
- 25. C++中的C++隨機數生成器
- 26. 數組中的唯一隨機項目
- 27. 在一個範圍內生成'n'唯一的隨機數
- 28. 在固定時間內生成一個唯一的隨機數
- 29. 生成(非唯一)隨機列表
- 30. 生成唯一隨機顯着顏色?
有31和60之間的有限範圍內,所以它一定會重複在某些點(考慮到你想要的整數) – sidyll