スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

SCV:分布を指定したランダムデータ生成

SCVではランダム生成において、モードが存在します。
今回はそれらを試してみました。


モード 説明
RAMDAM 指定分布範囲での一様なランダム生成
SCAN とりうる値で小さいものから大きいものへと生成
RANDOMAVOIDDUPLICATE 生成可能な数値が出尽くすまで同一の値を生成しない
DISTRIBUTION scv_bag<>で確率分布を指定

  • サンプルコード

     1|#include <scv.h>
     2|
     3|int sc_mainint argc, char* argv[] ) {
     4|
     5|  scv_smart_ptr<int> data_p( "data" );
     6|
     7|  data_p->keep_only( -1212 );
     8|  data_p->keep_out( -22 );
     9|
    10|  printf( "-----------------------\n");
    11|  printf( "--- MODE:RANDOM     ---\n");
    12|  printf( "-----------------------\n");
    13|  data_p->set_mode(scv_extensions_if::RANDOM);
    14|  for (int i=0; i<20; i++) {
    15|    data_p->next();
    16|    printf( "[SCV] data = %d\n", data_p->read() );
    17|  }
    18|
    19|  printf( "-----------------------\n");
    20|  printf( "--- MODE:SCAN       ---\n");
    21|  printf( "-----------------------\n");
    22|  data_p->set_mode(scv_extensions_if::SCAN);
    23|  for (int i=0; i<20; i++) {
    24|    data_p->next();
    25|    printf( "[SCV] data = %d\n", data_p->read() );
    26|  }
    27|
    28|  printf( "-----------------------------------\n");
    29|  printf( "--- MODE:RANDOM_AVOID_DUPLICATE ---\n");
    30|  printf( "-----------------------------------\n");
    31|  data_p->set_mode(scv_extensions_if::RANDOM_AVOID_DUPLICATE);
    32|  for (int i=0; i<20; i++) {
    33|    data_p->next();
    34|    printf( "[SCV] data = %d\n", data_p->read() );
    35|  }
    36|
    37|  printf( "-------------------------\n");
    38|  printf( "--- MODE:DISTRIBUTION ---\n");
    39|  printf( "-------------------------\n");
    40|  data_p->set_mode(scv_extensions_if::DISTRIBUTION);
    41|  for (int i=0; i<20; i++) {
    42|    data_p->next();
    43|    printf( "[SCV] data = %d\n", data_p->read() );
    44|  }
    45|
    46|  return 0;
    47|}
  • 実行結果

  • $> ./main 
    
                 SystemC 2.2.0 --- Jan 15 2012 14:19:56
            Copyright (c) 1996-2006 by all Contributors
                        ALL RIGHTS RESERVED
    -----------------------
    --- MODE:RANDOM     ---
    -----------------------
    [SCV] data = -7
    [SCV] data = 3
    [SCV] data = 6
    [SCV] data = 4
    [SCV] data = 11
    [SCV] data = 6
    [SCV] data = -11
    [SCV] data = -9
    [SCV] data = -7
    [SCV] data = -7
    [SCV] data = 4
    [SCV] data = 5
    [SCV] data = 12
    [SCV] data = 5
    [SCV] data = -9
    [SCV] data = 10
    [SCV] data = -10
    [SCV] data = -5
    [SCV] data = 4
    [SCV] data = 10
    -----------------------
    --- MODE:SCAN       ---
    -----------------------
    [SCV] data = -12
    [SCV] data = -11
    [SCV] data = -10
    [SCV] data = -9
    [SCV] data = -8
    [SCV] data = -7
    [SCV] data = -6
    [SCV] data = -5
    [SCV] data = -4
    [SCV] data = -3
    [SCV] data = 3
    [SCV] data = 4
    [SCV] data = 5
    [SCV] data = 6
    [SCV] data = 7
    [SCV] data = 8
    [SCV] data = 9
    [SCV] data = 10
    [SCV] data = 11
    [SCV] data = 12
    -----------------------------------
    --- MODE:RANDOM_AVOID_DUPLICATE ---
    -----------------------------------
    [SCV] data = 4
    [SCV] data = 10
    [SCV] data = -3
    [SCV] data = -5
    [SCV] data = 6
    [SCV] data = -9
    [SCV] data = 9
    [SCV] data = 12
    [SCV] data = -10
    [SCV] data = -4
    [SCV] data = 11
    [SCV] data = 3
    [SCV] data = 8
    [SCV] data = -12
    [SCV] data = -8
    [SCV] data = -11
    [SCV] data = -7
    [SCV] data = 7
    [SCV] data = -6
    [SCV] data = 5
    -------------------------
    --- MODE:DISTRIBUTION ---
    -------------------------
    
    *** SCV_ERROR: INTROSPECTION_EMPTY_DISTRIBUTION at time 0 s in process 
        Setting mode to DISTRIBUTION for 'data' without adding a scv_bag OR scv_bag > object. The setting will be ignored.
    [SCV] data = 9
    [SCV] data = 3
    [SCV] data = -8
    [SCV] data = -10
    [SCV] data = 5
    [SCV] data = 10
    [SCV] data = -11
    [SCV] data = 11
    [SCV] data = -3
    [SCV] data = 6
    [SCV] data = -4
    [SCV] data = 4
    [SCV] data = -9
    [SCV] data = 12
    [SCV] data = -12
    [SCV] data = 8
    [SCV] data = -6
    [SCV] data = 7
    [SCV] data = -5
    [SCV] data = -7
    

DISTRIBUTIONモードだけエラーが出ていますが、
これは、scv_bagを指定していないためです。
scv_bagについては次回説明します。

関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
08 | 2017/09 | 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。