示例#1
0
 int choose(Rand& rand) const {
     const size_t v = rand.get(totalRatio);
     for (size_t i = 0; i < TYPE_MAX; i++) {
         if (v < ratio[i]) return i;
     }
     throw cybozu::Exception("must not reach here.");
 }
示例#2
0
文件: rest.cpp 项目: Webern/Entropy
 bool rest( const Int entrpy, const Rand& rand0to12 )
 {
     Int r = rand0to12.get();
     switch ( entrpy )
     {
         case 0:
             return r > 10;
             break;
         case 1:
             return r > 10;
             break;
         case 2:
             return r > 10;
             break;
         case 3:
             return r > 9;
             break;
         case 4:
             return r > 9;
             break;
         case 5:
             return r > 8;
             break;
         case 6:
             return r > 8;
             break;
         case 7:
             return r > 8;
             break;
         case 8:
             return r > 7;
             break;
         case 9:
             return r > 7;
             break;
         case 10:
             return r > 6;
             break;
         case 11:
             return r > 6;
             break;
         case 12:
             return r > 5;
             break;
         default:
             break;
     }
     return false;
 }
示例#3
0
DenseMtx Precode_Matrix::make_MT() const
{
	// rfc 6330, pg 24
	Rand rnd;

	DenseMtx MT = DenseMtx (_params.H, _params.K_padded + _params.S);

	for (uint16_t row = 0; row < MT.rows(); ++row) {
		uint16_t col;
		for (col = 0; col < MT.cols() - 1; ++col) {
			auto tmp = rnd.get (col + 1, 6, _params.H);
			if ((row == tmp) || (row ==
								(tmp + rnd.get (col + 1, 7, _params.H - 1) + 1)
																% _params.H)) {
				MT (row, col) = 1;
			} else {
				MT (row, col) = 0;
			}
		}
		// last column: alpha ^^ i, as in rfc6330
		MT (row, col) = RaptorQ::Impl::oct_exp[row];
	}
	return MT;
}
示例#4
0
void Gauss::srand(void)
{
    static Rand rand;
    Rand::setSeed( rand.get() ); // randomize
}