我需要在1到100的特定範圍內生成5個隨機數,但沒有重複。在一個範圍內生成'n'唯一的隨機數
A1 = 1(from)
A2 = 100(to)
A3 = 5 (Required random number)
A4,A5,A6,A7,A8 in cell should generate random number
我需要在1到100的特定範圍內生成5個隨機數,但沒有重複。在一個範圍內生成'n'唯一的隨機數
A1 = 1(from)
A2 = 100(to)
A3 = 5 (Required random number)
A4,A5,A6,A7,A8 in cell should generate random number
正如fafl指出,你可以使用列表。
下面是一個例子。
/*Note: The Code does not have validations like the random number needed should be less
than the range etc. You should take care of such issues and improvise the code for the
same.
Rest of the code is optimized and makes a single read and write from Spread Making it
run fast*/
function myFunction() {
//var ss = SpreadsheetApp.getActiveSpreadsheet();
var ss = SpreadsheetApp.openById("1_xoBxknhDm1pM3MBw0Jbat3BTV4HXep7nZlOPw4tEWg");
var sheet = ss.getSheets()[0];
var values = sheet.getRange(1, 2, 3, 1).getValues();
var nRandomNumbers = getNRandomNumbers(values[0][0], values[1][0], values[2][0]);
sheet.getRange(4,2,values[2][0],1).setValues(nRandomNumbers);
}
function getRandomNumber(min, max) {
return Math.random() * (max - min) + min;
}
function getNRandomNumbers(from, to, n){
var listNumbers = [];
var nRandomNumbers = [];
for(var i = from; i <= to; i++) {
listNumbers.push(i);
}
for(var i = 0; i < n; i++) {
var index = getRandomNumber(0, listNumbers.length);
nRandomNumbers.push([listNumbers[parseInt(index)]]);
listNumbers.splice(index, 1);
}
return nRandomNumbers;
}
演示鏈接:(請將代碼複製到您的驅動器/片,不能獲得工作許可)
表:https://docs.google.com/spreadsheets/d/1_xoBxknhDm1pM3MBw0Jbat3BTV4HXep7nZlOPw4tEWg/edit#gid=0
如果您不介意可以分享電子表格。我無法運行腳本 –
@Nagaraj Shet我在一個記事本上做了這段代碼,我會編輯它並添加一些更多的描述。希望能幫助到你。當我到家時,我會鏈接一個工作的應用程序。現在我不能。 –
以下是電子表格鏈接https://docs.google.com/spreadsheets/d/1ikLPx7ltkmliwxhq-UOMAagZD1IKzJJyFlrbpEHOMKQ/edit#gid=0 –
一個簡單的方法可以是:
有更快的方法,但只有100個整數應該沒問題。
編輯:試試這個代碼:
function shuffleArray(array) { // from http://stackoverflow.com/a/12646864/5710637
for (var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
}
function Randomnumber() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange("c2:C5");
var min = sheet.getRange("A1").getValue();
var max = sheet.getRange("A2").getValue();
var numbers = []
for (var i = min; i <= max; i++) {
numbers.push(i);
}
shuffleArray(numbers)
var counter = 0;
for (var x = 1; x <= range.getWidth(); x++) {
for (var y = 1; y <= range.getHeight(); y++) {
range.getCell(y, x).setValue(numbers[counter]);
counter++;
}
}
};
感謝您採取主動...... –
function Randomnumber(){ var sheet = SpreadsheetApp.getActiveSheet(); var range = sheet.getRange(「c2:C5」); var min = sheet.getRange(「A1」)。getValue(); var max = sheet.getRange(「A2」)。getValue(); 爲(品種X = 1; X <= range.getWidth(); X ++){ 爲(VAR Y = 1; Y <= range.getHeight(); Y ++){ VAR數=(Math.floor(數學.random()*(max - min + 1))+ min); range.getCell(y,x).setValue(number); } } }; –
感謝您採取主動....目前我使用下面的腳本和工作正常,但隨機數來重複,並在指定的範圍內。 然而,不是指定的範圍,我需要在單元格A4到A8下指定5個隨機數。 –
請用電子表格舉例,我可以理解。 –