SCV:重み付けランダムデータ生成(値)
scv_bagを使ってランダムの確率分布を指定することが出来ます。
- サンプルコード
#include <scv.h> int sc_main( int argc, char* argv[] ) { scv_bag<int> dist; dist.add(0,15); // 50% dist.add(1,8); // 27% dist.add(2,4); // 14% dist.add(3,2); // 6% dist.add(4,1); // 3% scv_smart_ptr<int> data_p( "data" ); data_p->keep_only( 0, 5 ); data_p->set_mode(dist); for (int i=0; i<30; i++) { data_p->next(); printf( "[SCV] data = %d\n", data_p->read() ); } return 0; }
- 実行結果
$> ./main SystemC 2.2.0 --- Jan 15 2012 14:19:56 Copyright (c) 1996-2006 by all Contributors ALL RIGHTS RESERVED [SCV] data = 0 [SCV] data = 0 [SCV] data = 0 [SCV] data = 2 [SCV] data = 1 [SCV] data = 0 [SCV] data = 0 [SCV] data = 0 [SCV] data = 1 [SCV] data = 0 [SCV] data = 2 [SCV] data = 0 [SCV] data = 3 [SCV] data = 0 [SCV] data = 2 [SCV] data = 4 [SCV] data = 0 [SCV] data = 4 [SCV] data = 2 [SCV] data = 4 [SCV] data = 0 [SCV] data = 1 [SCV] data = 3 [SCV] data = 0 [SCV] data = 2 [SCV] data = 1 [SCV] data = 0 [SCV] data = 1 [SCV] data = 0 [SCV] data = 0
実際の結果は。。。
値 | 発生数 | 割合 |
---|---|---|
0 | 15 | 50% |
1 | 5 | 17% |
2 | 5 | 17% |
3 | 2 | 7% |
4 | 3 | 16% |