LoginSignup
0
0

More than 5 years have passed since last update.

重複しない乱数配列(寝起きの発想)

Last updated at Posted at 2015-09-28

yumetodo氏が、以前書いた乱数配列生成器速度測定結果を書いてくれたんですが、あまりにも遅いと思い、他にも作れないかなと考えてみました。ただ、寝起きの状態で思いついた方法なので色々お察しだろうなと思ってましたが、案の定お察しの通りでしたw
実際これ書いてみたのは目が完全に覚めてからなんですが、寝起きの発想でもやっぱり気にはなったのでとりあえず書いてビルドした次第であります。
すごくメモリに優しくないプログラムです。
正直自分でも呆れてしまってます。

source.cpp
#include <iostream>
#include <vector>
#include <algorithm>

auto make_rand_array(const size_t arr_size, int rand_min, int rand_max) {
    if (rand_max < rand_min) std::swap(rand_min, rand_max);
    std::vector<int> arr(rand_max - rand_min + 1);
    int i = rand_min;
    for (auto itr = arr.begin(); itr != arr.end(); ++itr, i++) {
        *itr = i;
    }
    std::random_shuffle(arr.begin(), arr.end());
    if(arr.size() > arr_size) arr.erase(arr.begin() + arr_size, arr.end());
    return arr;
}

使用例は以前のと同じです。

以上、ただのお遊びでした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0