Create vector with unique values
    6 ビュー (過去 30 日間)
  
       古いコメントを表示
    
I need to create a vector of length 5000 in the interval from 1 to 2 with unique values (so that there are no repetitions), is it possible to do this? (the randi command gives me the values, but there appear repetitions)
0 件のコメント
採用された回答
  David Hill
      
      
 2022 年 3 月 31 日
        
      編集済み: David Hill
      
      
 2022 年 3 月 31 日
  
      v=1+rand(1,5000);
1 件のコメント
  Bruno Luong
      
      
 2022 年 3 月 31 日
				
      編集済み: Bruno Luong
      
      
 2022 年 3 月 31 日
  
			You can't be sure there is no repetition, especially consider the number of floating point numbers in (0,1) and generate by rand() on a computer are finite (but large), but I admit the chance is tiny.
その他の回答 (2 件)
  Bruno Luong
      
      
 2022 年 3 月 31 日
        
      編集済み: Bruno Luong
      
      
 2022 年 3 月 31 日
  
      Rejection method, it likely needs a single iteration
n = 5000;
while true
    r = unique(1+rand(1,round(n*1.1)));
    p = length(r);
    if p >= n
        r = r(randperm(p,n));
        break
    end
end
r
% check
all(r>=1 & r<=2)
length(unique(r))==length(r)
4 件のコメント
  Bruno Luong
      
      
 2022 年 3 月 31 日
				
      編集済み: Bruno Luong
      
      
 2022 年 3 月 31 日
  
			Yes, you point correctly unique sort the random stream. 
+1 Good point alsoo using 'stable' option and avoid randperm.
  Bruno Luong
      
      
 2022 年 3 月 31 日
				Here is complete code with modification suggested by @Les Beckham
n = 5000;
while true
    r = unique(1+rand(1,round(n*1.1)),'stable');
    p = length(r);
    if p >= n
        r = r(1:n);
        break
    end
end
  Bruno Luong
      
      
 2022 年 3 月 31 日
        
      編集済み: Bruno Luong
      
      
 2022 年 3 月 31 日
  
      % I'm sure there is no repetition but the set of values is not random
r = 1+randperm(5000)/5000;
% check
all(r>=1 & r<=2)
length(unique(r))==length(r)
0 件のコメント
参考
カテゴリ
				Help Center および File Exchange で Random Number Generation についてさらに検索
			
	製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



