პრობლემის ფორმულირება
დავუშვათ, რომ ჩვენ უნდა შევქმნათ მთელი რიცხვების შემთხვევითი რიცხვების ნაკრები გამეორების გარეშე მნიშვნელობების მოცემულ დიაპაზონში. მაგალითები მოძრაობაში:
- უნიკალური შემთხვევითი კოდების გენერირება პროდუქტებისა თუ მომხმარებლებისთვის
- ადამიანების დავალებების მინიჭება (თითოეული შემთხვევითი სიიდან)
- სიტყვების პერმუტაცია საძიებო შეკითხვაში (გამარჯობა სეო-შნიკამ)
- ლოტოს თამაში და ა.შ.
მეთოდი 1. მარტივი
დასაწყისისთვის, მოდით განვიხილოთ მარტივი ვარიანტი: ჩვენ უნდა მივიღოთ 10 მთელი რიცხვის შემთხვევითი ნაკრები 1-დან 10-მდე. Excel-ში ჩაშენებული ფუნქციის გამოყენებით. საქმეს შორის (EGE BETWEEN) უნიკალურობა არ არის გარანტირებული. თუ შეიყვანთ მას ფურცლის უჯრედში და დააკოპირებთ 10 უჯრედს, მაშინ გამეორება მარტივად შეიძლება მოხდეს:
ამიტომ, ჩვენ სხვა გზით წავალთ.
Excel-ის ყველა ვერსიას აქვს ფუნქცია RANK (RANG), განკუთვნილია რეიტინგისთვის ან სხვა სიტყვებით რომ ვთქვათ, სიმრავლეში რიცხვის ზედა პოზიციის დასადგენად. სიაში ყველაზე დიდ რიცხვს აქვს რანგი=1, მეორეს ზედა აქვს რანგი=2 და ა.შ.
შევიყვანოთ ფუნქცია A2 უჯრედში SLCHIS (RAND) არგუმენტების გარეშე და დააკოპირეთ ფორმულა 10 უჯრედში. ეს ფუნქცია გამოგვიქმნის 10 შემთხვევითი წილადი რიცხვის კომპლექტს 0-დან 1-მდე:
შემდეგ სვეტში წარმოგიდგენთ ფუნქციას RANKთითოეული მიღებული შემთხვევითი რიცხვისთვის რეიტინგში პოზიციის დასადგენად:
B სვეტში ვიღებთ იმას, რაც გვინდოდა - არაგანმეორებადი შემთხვევითი რიცხვების ნებისმიერ სასურველ რაოდენობას 1-დან 10-მდე.
წმინდა თეორიულად შეიძლება შეიქმნას სიტუაცია, როცა SLCHIS მოგვცემს A სვეტში ორ იდენტურ შემთხვევით რიცხვს, მათი რიგები ემთხვევა და B სვეტში გამეორებას მივიღებთ. თუმცა, ასეთი სცენარის ალბათობა უკიდურესად მცირეა, თუ გავითვალისწინებთ იმას, რომ სიზუსტე არის 15 ათობითი ადგილი.
მეთოდი 2. რთული
ეს მეთოდი ოდნავ უფრო რთულია, მაგრამ იყენებს მასივის მხოლოდ ერთ ფორმულას. დავუშვათ, რომ ფურცელზე უნდა შევქმნათ 9 განუმეორებელი შემთხვევითი რიცხვის სია 1-დან 50-მდე დიაპაზონში.
შეიყვანეთ შემდეგი ფორმულა A2 უჯრედში, დააწკაპუნეთ ბოლოს Ctrl + Shift + Enter (შეიყვანეთ მასივის ფორმულის სახით!) და დააკოპირეთ ფორმულა უჯრედების სასურველ რაოდენობამდე:
მეთოდი 3. მაკრო
და, რა თქმა უნდა, პრობლემის მოგვარება შეგიძლიათ Visual Basic-ში პროგრამირების გამოყენებით. შემთხვევითი შერჩევის შესახებ ერთ-ერთ ძველ სტატიაში მე უკვე მოვიყვანე ლოტოს მასივის მაკრო ფუნქცია, რომელიც აწარმოებს შემთხვევითი არაგანმეორებადი რიცხვების საჭირო რაოდენობას მოცემული ინტერვალიდან.
- როგორ გამოვთვალოთ უნიკალური მნიშვნელობების რაოდენობა დიაპაზონში
- ელემენტების შემთხვევითი შერჩევა სიიდან