შემთხვევითი რიცხვები გამეორების გარეშე

პრობლემის ფორმულირება

დავუშვათ, რომ ჩვენ უნდა შევქმნათ მთელი რიცხვების შემთხვევითი რიცხვების ნაკრები გამეორების გარეშე მნიშვნელობების მოცემულ დიაპაზონში. მაგალითები მოძრაობაში:

  • უნიკალური შემთხვევითი კოდების გენერირება პროდუქტებისა თუ მომხმარებლებისთვის
  • ადამიანების დავალებების მინიჭება (თითოეული შემთხვევითი სიიდან)
  • სიტყვების პერმუტაცია საძიებო შეკითხვაში (გამარჯობა სეო-შნიკამ)
  • ლოტოს თამაში და ა.შ.

მეთოდი 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-ში პროგრამირების გამოყენებით. შემთხვევითი შერჩევის შესახებ ერთ-ერთ ძველ სტატიაში მე უკვე მოვიყვანე ლოტოს მასივის მაკრო ფუნქცია, რომელიც აწარმოებს შემთხვევითი არაგანმეორებადი რიცხვების საჭირო რაოდენობას მოცემული ინტერვალიდან.

  • როგორ გამოვთვალოთ უნიკალური მნიშვნელობების რაოდენობა დიაპაზონში
  • ელემენტების შემთხვევითი შერჩევა სიიდან

დატოვე პასუხი