如何从变量生成随机字符

时间:2016-11-18 15:40:14

标签: c++

我有两个字符串,他们有' - '和' +'登录。

我想从变量中选择一个随机符号。到目前为止,我试过这样,但它只输出' +' - 签名,我怎么能让它正确?

srand(time(0));
char rand_symb;
char plus = '+';
char minus = '-';
rand_symb = rand() % (plus - minus + 1) + minus;

2 个答案:

答案 0 :(得分:5)

最好使用C ++ 11 random generation facilities和公平的硬币模拟器

#include <iostream>
#include <random>

int main()
{
    std::random_device r;

    std::default_random_engine e1(r());
    std::bernoulli_distribution coin_flip(0.5);
    bool sign = coin_flip(e1);

    std::cout << (sign ? '-' : '+');

}

Example

答案 1 :(得分:2)

您在两个值之间进行选择,因此您需要生成两个随机值。最简单的是生成0和1:

 Dim rng As Range
    rng = Sheets("NewForecast").ListObjects("Table").Range.Select
    If rng.Rows = 0 Then
    rng.EntireRow.Delete
    End If

(是的,狂热的纯粹主义者会告诉你,这注定要失败,因为int value = rand() % 2; 很糟糕,但这对你目前正在做的事情来说已经足够了。)

根据该值,选择以下两个字符之一:

rand()

或者,为了使整个事情更紧凑:

char ch = value ? '+' : '-';