मैंने इस समारोह को सी में लिखा है और मैं इसे यादृच्छिक क्रमपरिवर्तन या संख्याओं की सूची 1 से एन तक बनाना चाहता हूं। मुझे दोहराने वाली संख्याएं प्राप्त करने में परेशानी हो रही है। तो अगर आप एन = 4 है, मुझे यह पसंद है एक यादृच्छिक सरणी केवल एक बार 1-4 से युक्त वापस जाने के लिए, उदाहरण के लिए होगा: {1,3,4,2}किसी सरणी का यादृच्छिक क्रमपरिवर्तन कैसे बनाएं?
int* random(int n)
{
int* r = malloc(n * sizeof(int));
// initial range of numbers
for(int i=0;i<n;++i){
r[i]=i+1;
}
// shuffle
for (int i = 1; i <= n; ++i){
int j = rand() % i;
r[i] = r[j];
r[j] = i;
}
return r;
}
लुकअप फिशर-येट्स शफल ... –