Luo kaavio satunnaisilla tiedoilla:
Date Value 1/1/2018 123 1/2/2018 453
Käytin RAND
arvojen luomiseksi, mutta älä halua niiden laskevan koko ajan uudelleen. Kuinka estää RAND
?
vastaus
Lyhyt vastaus on ”Voit” t ”(ainakaan ilman komentosarjaa). Ellei työsi ole luonteeltaan tieteellistä, et todennäköisesti tarvitse ”satunnaisia” lukuja, vain arvaamattomia . (Itse asiassa, vaikka teknisesi, edes RAND ei tuota totta satunnaisluvut; pikemminkin se käyttää monimutkaista algoritmia … hyvin, luo arvaamaton numero.)
Ongelma, kuten tiedät, on RAND laskee uudelleen. Mutta voimme kirjoittaa minkä tahansa määrän kaavoja, jotka tuottavat ”näennäissatunnaisia” numeroita päivämäärästä alkaen. Jos esimerkiksi olet, että päivämäärät ovat sarakkeessa A ja ”satunnaisluvut” sarakkeessa B, voit laittaa jotain tällaista sarakkeeseen B2 ja kopioida tarpeen mukaan:
=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"))
Tämä käyttää päivämäärän ominaisuuksia” näennäissatunnaisen ”3-numeroisen luvun luomiseen.
Liian monimutkainen kaava ei ole kaikki tämä tärkeää. Mursin vain joitain matemaattisia funktioita yhteen. Ne olisivat voineet olla loputtomia yhdistelmiä toisista.
Jos tarvitset kuitenkin vain ”yksilöllisen ja toistumattoman” numeron – esimerkiksi laukaisimeksi alusta, kuten Zapier – tarvitset vain päivämäärän numeerisen muodon:
=VALUE(A2)
… kopioitu tarpeen mukaan .
Kumpikin kaava voi toimia matriisikaavana (eli sijoittaa yhteen soluun ja täyttää koko sarakkeen) pienillä muutoksilla:
=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))
Vastaa
Kanssa google script
tools> script edi tor
Tee sitten toiminto. Sinun on kytkettävä toiminto painikkeeseen tai muuhun tapahtumaan.
Syötäksesi numeron, sinun on valittava alue. Laita sitten arvo matriisien kanssa ja matriisilla. Ajattele sitä kuin joukko rivejä.
Tässä on esimerkki Google-komentosarjastani
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; }
Vastaa
Etsin samaa kysymystä tänä iltana ja löysin tämän paperin: https://www.ssl.berkeley.edu/~mlampton/RandomSpreadsheet4.pdf
Voit luoda asiakirjassa olevilla kaavoilla oman näennäissatunnaislukugeneraattorisi muutamassa minuutissa. Se antaa sinulle luettelon satunnaisluvuista, jotka muuttuvat vain, kun vaihdat siementä.
Vastaa
Minulla on hyvin yksinkertainen helppo ratkaisu, kaksi helppoa kiertotapaa:
-
Myös Excelillä: Luo niin monta satunnaislukua kuin haluat Excelissä, kopioi liitä, valmis
-
Muistio: Luo Google Sheets -sovelluksessa, kopioi liitä muistiinpanoon ja kopioi sitten takaisin sisään, valmis