O que a função srand (time (0)) faz em C ++?


Melhor resposta

Vamos começar do início, como você sabe que o computador gera pseudoaleatórios números não verdadeiramente aleatórios, pois são baseados em alguma fórmula projetada pelos programadores. E com base nessa fórmula, o computador gera um conjunto de números aleatórios como esperamos. Uma maneira de pensar sobre isso é dizer que o computador começa a ler um livro que contém números em todas as páginas. Ao ler este livro, o computador pode parecer produzir uma sequência de números aleatórios.

Mas há um problema: o computador começa a ler o livro desde o início. Por causa disso, o computador sempre produzirá o mesmo conjunto de números “aleatórios” em um programa. Suponha que se você estiver usando este programa em algum lugar, digamos que um jogo de rolagem de dados sempre produzirá os mesmos resultados e você não gostaria disso.

Uma solução para este problema seria se o computador começasse a ler de um lugar arbitrário no livro e não desde o início. Bem, isso é chamado de “ propagação ”. Ao passar o argumento de tempo para a função srand , o que ela faz é basicamente gerar o número aleatório com base na data e hora atuais, devido à qual você obtém diferentes aleatórios cada vez que inicia um programa, e isso não é confiável, mas funciona na maior parte do tempo.

Se você usasse este código, você teria incluiu um arquivo no topo < cstdlib se não estiver bem. Este arquivo contém a definição da função de gerar o número aleatório.

Resposta

Em C ++, o que acontecerá se eu escrever “return 1 “na função principal?

Se a instrução return 1; for realmente executada, fará com que seu programa seja encerrado, retornando um status de 1 para o ambiente de chamada. (Ele pode retornar o valor 1 para a função de chamada, mas C ++ não permite chamar main.)

O que isso significa depende do ambiente. O idioma não atribui nenhum significado a um valor de retorno de 1. Ele exige retorno 0; para retornar um status que indica sucesso. O cabeçalho , que declara a função exit(), também define macros EXIT\_SUCCESS e EXIT\_FAILURE, que têm a semântica óbvia se seus valores forem retornados de principal. (Retornar um valor de main é essencialmente equivalente a chamar exit() com o mesmo valor.)

Em muitos sistemas , incluindo Linux, outros sistemas semelhantes ao UNIX e Windows, o retorno 0 indica sucesso e o retorno 1 indica falha – mas outros sistemas têm convenções diferentes. (Em particular, OpenVMS usa valores pares para denotar falha e valores ímpares para denotar sucesso, então return 1; indicaria sucesso; o tempo de execução C tem um código especial para fazer return 0; retorna um status ímpar, ou seja, bem-sucedido.)

Se você está escrevendo um código que só deve funcionar em sistemas Linux / UNIX / POSIX, return 1; pode ser usado para indicar que o programa falhou – mas return EXIT\_FAILURE; é mais portátil.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *