2010-03-03 74 views

回答

3

您可以將日期轉換爲Unix時間戳。隨機選取兩個時間戳之間的時間戳並將其轉換回日期。

+0

...並剝離時間部分。 – Joey 2010-03-03 15:05:36

+0

我如何將日期轉換爲unix時間戳? – amitlicht 2010-03-03 15:08:15

+0

看看函數strptime – Sjoerd 2010-03-03 15:19:17

0

變換的日期到3個整數:D1 = DD,M1 =毫米,Y1 = YYYY,同樣與D2,M2,Y2

然後,假設你知道如何生成隨機數(http://www.cprogramming.com/tutorial/random.html),生成一y1和y2之間的隨機數,它將作爲年份。然後,dd可以在1到28之間隨機生成,mm在1到12之間。這會將所有日期限制爲最大28。您可以先隨機生成月份,然後使用表格查找每個月有多少天(如果您考慮這個問題,您甚至不需要一張表),只是一種檢測閏年的方法,天)。

要生成a和b之間的隨機INT,你可以使用:

int random = a + rand() % (b - a + 1); 

您可以擴展此爲日期在哪裏工作Y1 = Y2,甚至M1 = M2,以及只用一些額外的條件

1

將日期轉換爲固定數字,例如Julian值(稱爲J1和J2)。從0 < = N < = J2-j1生成一個「隨機」數字。然後將J1 + N從Julian轉換回日期。

0

使用類型和函數標準庫中time.h中:

http://en.wikipedia.org/wiki/Time.h

了部分字符串轉換爲整數,然後將其換算成time_t的。在計算出它們之間的隨機值後,可以用另一種方式將結果存入字符串。