Ffurfio'r broblem
Gadewch i ni dybio bod angen i ni greu set o haprifau cyfanrif heb ailadrodd mewn ystod benodol o werthoedd. Enghreifftiau wrth fynd:
- cynhyrchu codau ar hap unigryw ar gyfer cynhyrchion neu ddefnyddwyr
- aseinio pobl i dasgau (pob un ar hap o'r rhestr)
- newid geiriau yn yr ymholiad chwilio (helo seo-shnikam)
- chwarae lotto ac ati.
Dull 1. Syml
I ddechrau, gadewch i ni ystyried opsiwn syml: mae angen i ni gael set ar hap o 10 cyfanrif o 1 i 10. Gan ddefnyddio'r swyddogaeth sydd wedi'i chynnwys yn Excel RHWNG YR ACHOS (YMYL RHWNG) nid yw unigrywiaeth wedi'i warantu. Os rhowch ef mewn cell ddalen a'i gopïo i lawr 10 cell, yna gall ailadroddiadau ddigwydd yn hawdd:
Felly, awn y ffordd arall.
Mae gan bob fersiwn o Excel swyddogaeth RANK (ANG), a fwriedir ar gyfer graddio neu, mewn geiriau eraill, pennu safle uchaf rhif mewn set. Mae gan y rhif mwyaf yn y rhestr reng = 1, mae gan yr ail ar y brig safle = 2, ac yn y blaen.
Gadewch i ni fynd i mewn i'r swyddogaeth yng nghell A2 SLCHIS (RAND) heb ddadleuon a chopïwch y fformiwla i lawr 10 cell. Bydd y swyddogaeth hon yn cynhyrchu set o 10 rhif ffracsiynol hap o 0 i 1 i ni:
Yn y golofn nesaf rydym yn cyflwyno'r swyddogaeth RANKi benderfynu ar y safle yn y safle ar gyfer pob rhif ar hap a dderbyniwyd:
Rydyn ni'n cael yng ngholofn B yr hyn roedden ni ei eisiau - unrhyw nifer dymunol o gyfanrifau hap nad ydyn nhw'n ailadrodd o 1 i 10.
Yn ddamcaniaethol yn unig, gall sefyllfa godi pan SLCHIS yn rhoi dau rif ar hap union yr un fath i ni yng ngholofn A, bydd eu rhengoedd yn cyfateb a byddwn yn cael eu hailadrodd yng ngholofn B. Fodd bynnag, mae'r tebygolrwydd y bydd senario o'r fath yn fach iawn, o ystyried y ffaith mai 15 lle degol yw'r cywirdeb.
Dull 2. Cymhleth
Mae'r dull hwn ychydig yn fwy cymhleth, ond mae'n defnyddio un fformiwla arae yn unig. Gadewch i ni ddweud bod angen i ni greu rhestr o 9 cyfanrif hap nad yw'n ailadrodd yn yr ystod o 1 i 50 ar ddalen.
Rhowch y fformiwla ganlynol yng nghell A2, cliciwch ar y diwedd Ctrl + Shift + Enter (i'w nodi fel fformiwla arae!) a chopïwch y fformiwla i lawr i'r nifer o gelloedd a ddymunir:
Dull 3. Macro
Ac, wrth gwrs, gallwch chi ddatrys y broblem gan ddefnyddio rhaglennu yn Visual Basic. Yn un o'r hen erthyglau am samplu ar hap, cyfeiriais eisoes at swyddogaeth macro arae Lotto, sy'n cynhyrchu'r nifer gofynnol o rifau nad ydynt yn ailadrodd ar hap o gyfwng penodol.
- Sut i gyfrif nifer y gwerthoedd unigryw mewn ystod
- Detholiad ar hap o elfennau o restr