このコードは1から10までの乱数を生成することになっていますが、毎回1を返します。
int random_integer;
int lowest=1, highest=10;
int range=(highest-lowest)+1;
random_integer = lowest + int(range*rand()/(RAND_MAX + 1.0));
cout << random_integer << endl;
コードの何が問題になっていますか?
lowestとの間のランダムな整数が必要な場合は、次のhighestように記述します。
random_integer = lowest + rand() % range
    ここでオーバーフローする可能性があります- range*rand()。
通常の人々が使用するものを使用するだけです:rand() % 10 + 1。
range * rand() / (RAND_MAX + 1.0)
あなたが思うことをしません。いくつかの親を紹介します:
range * (rand() / (RAND_MAX + 1.0))
(ただし、この方法では偏った分布が得られることに注意してください。)
上記のすべての解決策に同意します。
これで、プログラムを実行するたびに異なるシーケンスを取得するために、srand()関数を使用できます。これにより、次のようにrand()関数にシードが提供   されます。  
srand(time(NULL))  
random_integer = lowest + rand() % range 
    rand()あなたはそれが0と1の間の値を返すと仮定しているようです。
これは正しくありません。0から。までの値を返しますRAND_MAX。
この2つは常に私のプログラムの一部です
float randf(float lo, float hi) {
    float random = ((float) rand()) / (float) RAND_MAX;
    float diff = hi - lo;
    float r = random * diff;
    return lo + r;
}
int randi(int lo, int hi)
{
    int n = hi - lo + 1;
    int i = rand() % n;
    if (i < 0) i = -i;
    return lo + i;
}