2013-05-29 3 views
1

Я взял на себя программу с переменной: static uint_8t * buffer объявил глобально, что мне нужно заполнить вверх, но не только с одним повторяющимся значением. Он не должен быть слишком «случайным», просто полным и не повторяющимся. Я использую этот буфер для запуска тестов командной строки read10 scsi на жестком диске. Я использую visual C++ 2012. Спасибо за вашу помощь заранее!Заполнение буфера со случайными значениями C++

ответ

7

Если хаотичность не имеет значения слишком много, вы могли бы рассмотреть что-то вроде std::rand с удобным алгоритмом:

std::generate_n(buffer, BUFFER_SIZE, std::rand); 

Тем фактом, что тип элемента вашего буфера беззнаковыми означает, что переполнение безопасно. Вот sample, хотя я подозреваю, что ваш код может быть немного другим;).

1

Если вы не возражаете значения быть последовательными, вы могли бы использовать std::iota:

#include <numeric> 

std::iota(buffer, buffer + SIZE, 0); 

Это позволит заполнить его с последовательными значениями, начиная с 0.

+0

Ooh, хорошее мышление. – chris

0
const size_t N = 100; // your number of elements 
for(size_t i = 0; i < N; ++i) 
{ 
    size_t tmp = i % std::limits<uint8_t>::max(); 
    buffer[i] = static_cast<uint_8t>(tmp) 
} 
Смежные вопросы