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. 用隨機數填充我的數組?
- 3. 用隨機數字填充數組android_java
- 4. 用隨機整數值填充數組
- 5. 隨機嵌套和填充數組
- 6. Javascript隨機數組
- 7. 填充在IMG SRC隨機數
- 8. SQL填充表用隨機數據
- 9. 用隨機數據填充內存
- 10. 閃電戰++:用隨機數填充數組
- 11. 用隨機數字填充二維數組
- 12. 用隨機數填充ArrayList然後打印數組
- 13. 如何使用指針填充隨機數的二維數組
- 14. 用非重複的隨機數填充數組
- 15. django queryset填充javascript數組
- 16. 隨機填充2d數組有一定的限制
- 17. 如何隨機生成A-Z來填充數組?
- 18. 如何填充隨機分佈符號的數組?
- 19. 如何使隨機填充0和1的int 2D數組?
- 20. 隨機填充一個二維數組(Java)
- 21. 隨機填充一個數組,不需要重複
- 22. 用隨機值填充我的數組C++
- 23. multidimentional char數組 - 如何填充隨機字符?
- 24. 從數組中挑選隨機項並填充 - jQuery
- 25. java填充2維數組與隨機0和1的
- 26. 用最小的間隔符/分佈填充隨機數組的數組?
- 27. 使用JSON數據填充Javascript數組
- 28. 如何用隨機顏色填充svg?
- 29. SQL選擇頂部和隨機填充
- 30. 列表上方的隨機填充?
這並不總是可能的 - 你舉一個例子,它不是。一般來說,你不會總是能夠做到這一點。你試圖解決的根本問題是什麼? – tvanfosson 2011-02-23 02:14:42
是的,我知道這並不總是可能的..基本上我試圖建立一個突出隨機圖像的「圖像網格」 - 它循環 - 突出顯示的圖像有一個標籤,如果它們太靠近 - 看看這個截圖(這可能比試圖解釋它更好)http://cl.ly/261Y2F0200442e220y3z – RyanLynch 2011-02-23 02:30:25