मेरा लक्ष्य क्या है कोशिश कर रहा हूँ है निम्नलिखित:छोटी रेंज से यादृच्छिक न दोहराई पूर्णांकों उत्पन्न
मैं एक अपेक्षाकृत छोटे श्रृंखला से, पूर्णांकों का एक वेक्टर बनाते हैं, और पूर्णांकों कि कोई भी सुनिश्चित करना चाहते हैं एक ही पूर्णांक के बाद होगा।
यानी, यह एक "कानूनी" वेक्टर है: [1 3 4 2 5 3 2 3 5 4]
और यह एक "अवैध" वेक्टर (के बाद से 5 में से 5 इस प्रकार) है: [1 3 4 2 5 5 2 3 5 4]
मैं randperm
साथ रूपों के सभी प्रकार randi
के साथ प्रयोग किया गया है, और, और मैं हमेशा अटक जाते हैं जब मैं 100 के आसपास तत्वों का एक वेक्टर उत्पन्न करने के लिए प्रयास करते हैं, एक छोटे से सीमा से (यानी, 1 और 5 के बीच पूर्णांक)।
फ़ंक्शन बस बहुत लंबे समय तक चलता है।
यहाँ प्रयास है कि मैं कर दिया है में से एक है:
function result = nonRepeatingRand(top, count)
result = randi(top, 1, count);
while any(diff(result) == 0)
result = randi(top, 1, count);
end
end
किसी भी और सभी मदद की बहुत सराहना की जाएगी। धन्यवाद !
सिर्फ एक छोटे से टिप्पणी का आनंद लें। गैर-दोहराव की स्थिति का मतलब है कि आपका वेक्टर कम "यादृच्छिक" – bla