Ik genereer een diagram met willekeurige gegevens:
Date Value 1/1/2018 123 1/2/2018 453
Ik gebruikte RAND
om de waarden te genereren, maar “wil niet dat ze de hele tijd herberekenen. Hoe de herberekening van RAND
onderdrukken?
Antwoord
Het korte antwoord is “You can” t “(tenminste niet zonder script). Maar tenzij je werk wetenschappelijk van aard is, heb je waarschijnlijk geen “willekeurige” getallen nodig, alleen onvoorspelbare getallen. (Om technisch te zijn, genereert zelfs RAND geen true willekeurige getallen; het gebruikt eerder een complex algoritme om … nou ja, een onvoorspelbaar getal te genereren.)
Het probleem, zoals u weet, is dat RAND herberekent. Maar we kunnen een willekeurig aantal formules schrijven die vanaf de datum “pseudo-willekeurige” getallen opleveren. Als u bijvoorbeeld aanneemt dat uw datums in kolom A staan en uw “willekeurige getallen” in kolom B, kunt u zoiets als dit in B2 plaatsen en zo ver als nodig kopiëren:
=VALUE(TEXT(INT(((A2*COS(DAY(A2))*PI())-INT(A2*COS(DAY(A2))*PI()))*1000)+IF(INT(((A2*COS(DAY(A2))*PI())-INT(A2*COS(DAY(A2))*PI()))*1000)<100,WEEKDAY(A2)*100,0),"000"))
Dit zal kenmerken van de datum gebruiken om een” pseudo-willekeurig “3-cijferig getal te genereren.
De al te ingewikkelde formule is dat niet alles belangrijk. Ik heb zojuist een aantal wiskundige functies in elkaar geslagen. Het hadden eindeloze combinaties van andere kunnen zijn.
Als je echter alleen een uniek en niet-herhalend getal nodig hebt, bijvoorbeeld als trigger voor een platform zoals Zapier – alles wat je echt nodig hebt is het numerieke formaat van de datum zelf:
=VALUE(A2)
… gekopieerd indien nodig .
Beide formules kunnen werken als een matrixformule (dwz geplaatst in één cel en de hele kolom vullen) met kleine wijzigingen:
=ArrayFormula(IF(A2:A = "", "", VALUE(TEXT(INT(((A2:A*COS(DAY(A2:A))*PI())-INT(A2:A*COS(DAY(A2:A))*PI()))*1000)+IF(INT(((A2:A*COS(DAY(A2:A))*PI())-INT(A2:A*COS(DAY(A2:A))*PI()))*1000)<100,WEEKDAY(A2:A)*100,0),"000")))
=ArrayFormula(IF(A2:A = "", "", VALUE(A2:A))
Antwoord
Met een google script
tools> script edi tor
Maak dan een functie. U moet de functie koppelen aan een knop of een andere gebeurtenis.
Om het nummer in te voeren, moet u een bereik selecteren. Voer vervolgens de waarde in met en array van arrays. Zie het als een reeks rijen.
Hier is mijn voorbeeld van een Google-script
function generateNumbers () { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()[0]; var randNumberRows = [] var i; for (i = 0; i < 20; i++) { var row = [] row.push(randInt(-20,20)); row.push(randInt(-20,20)); row.push(randInt(-20,20)); randNumberRows.push(row); } var range = sheet.getRange("A2:C21"); range.setValues(randNumberRows); } function randInt(start, end) { // range is from start to end + 1 so it is inclusive r = end - start + 1 return Math.floor(Math.random() * r) + start; }
Antwoord
Ik was vanavond op dezelfde vraag aan het onderzoeken en vond deze paper: https://www.ssl.berkeley.edu/~mlampton/RandomSpreadsheet4.pdf
U kunt de formules in dat document gebruiken om in enkele minuten uw eigen generator voor pseudo-willekeurige getallen te maken. Dat geeft je een lijst met willekeurige getallen die alleen veranderen als je de seed verandert.
Answer
Ik heb een zeer eenvoudige gemakkelijke oplossing, twee gemakkelijke kleine oplossingen:
-
Ook met Excel: genereer zoveel willekeurige getallen als je wilt in Excel, kopieer en plak, klaar
-
Kladblok: genereren in Google Spreadsheets, kopiëren en plakken in kladblok en vervolgens weer kopiëren en plakken, klaar