Printable Version of Topic
Click here to view this topic in its original format
თბილისის ფორუმი > Expert Exchange > ბუნებრივი განაწილება


Posted by: fashisti 31 Jan 2012, 14:45
კონკრეტულ მაგალითს მოვიყვან მაგალთად საჭიროა კარტის არევა (36 ელემენტიანი მასივი)

როგორ შეიძლება მაგის ბუნებრივად არევა ?

პროგრამირებაში ყველა რანდ ფუნქცია იყენებს ერთ ალგორითმს რომელიც ადრე თუ გვიან მეორდება.


Posted by: Crypto 1 Feb 2012, 10:57
fashisti
QUOTE
პროგრამირებაში ყველა რანდ ფუნქცია იყენებს ერთ ალგორითმს რომელიც ადრე თუ გვიან მეორდება.

ბუნებაში არ არსებობს რანდ ფუნქცია, რომელიც ყოველთვის სხვადასხვა შედეგს იძლევა და ერთხელ ამოგდებულ რიცხვ 5-ს აღარასოდეს გაიმეორებს. ყოველ ახალ შედეგზე უნდა შეამოწმო, ადრე ამოაგდო ასეთი რიცხვი თუ არა. თუ არის უკვე, მაშინ ხელახლა დააგენერირებ.

Posted by: generik 1 Feb 2012, 11:32
http://omedia.ge/blog/random_numbers/

Posted by: Dixtosa 5 Jul 2012, 01:19
და დროის მიხედვით რომ სეედ ცვალო?

Posted by: soggybottom 5 Jul 2012, 16:29
შეუძლებელია რო არ განმეორდეს იმიტო რო კარტების არევის რაოდენობა 36! ია და 36!+1ზე უეჭველი განმეორდება ერთ-ერთი. ზუსტად რა გინდა ვერ ვხვდები

Posted by: hunger 7 Jul 2012, 00:41
fashisti
კი არის შეაძლებელი აი ასე
წერ მასივში კარტებს რამე თანმიმდევრობით არ აქვს მნიშვნელობა (ბმული სია თუ იქნება უკეთესი რადგან ელემენტის ამოგდება იოლია)
შემდეგ ქმნი მასივს სადაც არეული კარრტი ინება და იწყებ კარტის გადტანას შემდეგნაირად.
for(int i=0;i<36;i++)
{
index=rand()%(36-i);
არეული მასივის მე-i ელემენტი = ჩვენი დალაგებულის მე-index ელემენტს
და ამოვაგდოთ მე-index ე ელემენტი ჩენი მასივიდან და დაგვრჩევა 36-i ელემენტი და გრძელდება ასე 36 ჯერ
}
ეს მენგონი ბუნებრივი არევის კარგი ვარიანტია და შენ თუ თვითონ rand() ფუნქციის შეცვლა ისე რო ერთი და იგივე ციფრი არ ამოიღოს მაგაზეც მაქვს ერთი ვარიანტი

Posted by: Snowman 7 Jul 2012, 04:13
რაც შეეხება კარგ რანდომს შეგიძლია MT (Mersenne Twister) გამოიყენო ან თუ ამხელა არ გჭირდება მაშინ არსებობს ამის ერთ-ერთი ვარიანტი TinyMT რომლის 32 და 64 იანი ვარიანტებია სხვაობ ისაა რომ თუ 32 იანის შემტხვევაში floating poin 0 64 იანის შემთხვევაში ,00 არის რამდენადაც მახსოვს

Posted by: fashisti 13 Jul 2012, 04:32
Snowman

ეგ არის PRNG (Pseudo random number generator) მე კი თავის დროზე მჭირდებოდა TRNG (True random number generator)

Dixtosa
soggybottom
hunger

ოდნავ ზემოთ generik-მა დადო ლინკი სადაც დეტალურად არის აღწერილი პრობლემის გადაწყვეტა.

პს ყველას დიდი მადლობა გამოხმაურებისთვის ))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)