2
A
回答
1
看看截圖,你似乎想從列表中選擇一個隨機分類,沒有2個選項在3個以內。 此代碼需要一個數組,併爲您提供滿足該條件的數組的子集。 您也可以指定最大選擇數量,儘管您可能並不總是那麼多。
var src = [0,1,2,3,4,5,6,7,8,9,10,11,12];
var getRnd = function(max){
var output = [];
var newSrc = src.slice();
var test, index, i, safe;
while (newSrc.length > 0 && output.length < max){
index = Math.floor(Math.random()*newSrc.length);
test = newSrc.splice(index,1);
//Make sure it's not within 3
safe = true;
for (i=0; i<output.length;i++){
if(Math.abs(test-output[i]) < 3){
//abort!
safe=false;
}
}
if(safe){
output.push(test);
}
}
return output;
};
alert(getRnd(4));
+0
正是我想要做的。謝謝! – RyanLynch 2011-02-23 02:59:44
0
甲方式(likley不是fastes)將是:
- 排序陣列
- 挑開始與新的洗牌數組隨機元素(在排序後的數組標記元件所用或刪除)
- 使用二分查找找到最後一個元素爲+3或-3的下一個元素(在-3和+3之間隨機選擇)。確保元素未被標記爲以前使用(否則找到另一個)
- 重複3,直到您可以找到元素。
- 你要麼從已排序數組中選取所有元素,要麼這樣的洗牌是不可能的。
我認爲你得到O(N * logN)與此(排序N * logN和選擇N個元素logN爲每個serch)。
0
假設數組中的值不能重複。
function one(array, mod){
var modArray = [];
for(var index in array){
var item = array[index];
var itemMod = item%3;
if(itemMod === mod){
modArray.push(item);
}
}
return modArray();
}
function two(modArray){
var sortedArray = // sort highest to lowest
for(var index in sortedArray){
var item = array[index];
if(index > 0 && item[index-1] === item[index]-3){
}else{return false;}
}
return sortedArray.length;
}
function main(array){
var a1 = one(array, 0);
var a2 = one(array, 1);
var a3 = one(array, 2);
var a1c = two(a1);
var a2c = two(a2);
var a3c = two(a3);
return // if a1c is greatest then a1, if a2c greatest then a2 ... etc
}
0
我認爲你必須以某種非標準方式使用短語「shuffle」。如果所有的數字已經在彼此的+3以內,那麼對數組進行排序會使它們按正確的順序排列,除非有重複的數據。
更多的例子可能會有所幫助。例如,這些例子是否有效,以及您正在尋找的東西?
[0, 3, 3] -> [3, 0, 3]
[9, 3, 6, 0, 6] -> [0, 3, 6, 9, 6]
[3, 3, 6, 0, 6] -> [0, 3, 6, 3, 6]
感覺就像這大概是圖論解決的問題 - 某種網絡穿越的一個最大/最小成本函數。
相關問題
- 1. 用隨機數填充數組
- 2. 用隨機數字填充數組android_java
- 3. 用隨機數填充我的數組?
- 4. 用隨機整數值填充數組
- 5. 隨機嵌套和填充數組
- 6. 用隨機排列填充數組
- 7. 用隨機數填充int []
- 8. CSS隨機填充
- 9. 填充空對象數組用充滿隨機在C#
- 10. 我的數組中的隨機數由上一個隨機數填充
- 11. Javascript隨機數組
- 12. 隨機填充2d陣列
- 13. 填充二維數組隨機整數相同數
- 14. 填充一個ListView用隨機數據
- 15. 填充的5個隨機整數
- 16. 用隨機數據填充內存
- 17. 用隨機數據填充表格
- 18. SQL填充表用隨機數據
- 19. 填充在IMG SRC隨機數
- 20. 用Pyspark中的隨機數填充na
- 21. 如何使用指針填充隨機數的二維數組
- 22. 程序中的內存錯誤,用隨機數填充數組
- 23. 用C++中的隨機數填充二維數組
- 24. 用隨機數字填充二維數組
- 25. 用非重複的隨機數填充數組
- 26. 如何填充具有特定隨機數的數組(java)
- 27. 幫助在二維數組中填充隨機數
- 28. 用隨機數填充數組在目標-c
- 29. 二維數組填充隨機數和輸出索引C++
- 30. 用隨機數填充數組並打印到屏幕
這並不總是可能的 - 你舉一個例子,它不是。一般來說,你不會總是能夠做到這一點。你試圖解決的根本問題是什麼? – tvanfosson 2011-02-23 02:14:42
是的,我知道這並不總是可能的..基本上我試圖建立一個突出隨機圖像的「圖像網格」 - 它循環 - 突出顯示的圖像有一個標籤,如果它們太靠近 - 看看這個截圖(這可能比試圖解釋它更好)http://cl.ly/261Y2F0200442e220y3z – RyanLynch 2011-02-23 02:30:25