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

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *