2010-04-26 47 views
2

得到了一個日誌文件,它裏面有各種文本。目前,它只是顯示爲一種顏色,每個條目說是這樣的:如何從種子生成隨機的人類可讀顏色? C#

Log from section 1: Some text here 
Log from section 125: Some text here 
Log from section 17: Some text here 
Log from section 1: Some text here 
Log from section 125: Some text here 
Log from section 1: Some text here 
Log from section 17: Some text here 

現在日誌文件中實時顯示,這將是很好用相同的部分號碼相同的顏色,使行。但是,可能會有相當大的數字範圍。

我想要做的是創建一個方法,將採取一個數字,並隨機生成一個獨特的顏色。雖然顏色必須在黑色背景下可讀,所以#000000不好,#101010或任何太暗都不能閱讀。

理想情況下,兩個相似的數字不會產生相同的顏色,因爲在上面的例子中,數字1和17可能太相似了,有些數字可能在10,000範圍內。

對此的任何想法?

+1

您將很快達到無法制造出「足夠獨特」的顏色的程度,從而使某些顏色看起來相同,或者至少足夠接近以致難以分辨。是否沒有過濾機制,以便用戶可以指定他/她有興趣看到什麼?此外,請注意,某種比例的人羣是以某種形式出現色盲的,因此對於我們(我是其中之一),我可以分辨出更小範圍的獨特色彩。 – 2010-04-26 07:05:08

+1

如果某些顏色不是完全獨一無二,上述的任何實現都將成爲獎勵。色盲友好並不重要。 – NibblyPig 2010-04-26 07:10:46

回答

1

是的。只需在HSV色彩空間中爲一種顏色生成隨機數並確保V高於50%(這樣它就不會太黑)。 Convert back to RGB as necessary。很簡單。

爲了確保顏色不太相似...我不知道。找出可能的數字範圍並均勻分割色輪?

+0

這聽起來不錯。關於具有不同的顏色,我在考慮GUID和abcde和abcdf導致完全不同的GUID的事實,如果使用隨機生成器以某種方式可能的話。 – NibblyPig 2010-04-26 07:12:43

+0

呃......我不知道,如果你真的想要,你可以使用某種散列/ GUID並將其轉換爲整數,但是你將這些數字映射到如此小的範圍,無論如何他們都可以無論如何,你都要並肩而行。我想出了一個愚蠢的複雜算法,它將英語單詞映射到不同的顏色一段時間後,考慮到一個單詞以特定字母開頭的概率.....然後從未結束使用該死的東西。它確實產生了一個漂亮的,均勻分佈的彩虹,用於字典式的序列,但是:D無論如何,不​​要爲它出汗。一些線路 – mpen 2010-04-26 07:21:24

+0

也有類似的顏色......人們將不得不看看數字來區分它們。他們沒有比他們現在更糟;) – mpen 2010-04-26 07:22:01

2

對於您可以使用多少種不同的顏色,存在一些相當嚴格的認知限制。仔細預先選擇一系列顏色會更好。如果您確實需要區分十幾個不同的項目,則需要使用其他內容,例如更改背景顏色。

另外,請記住,10%的男性(因此是開發人員)人羣是色盲的,所以除非爲了您自己的利益,否則我不會太過依賴色彩。

一個非常有趣的替代技術可以在TortoiseSVN的責備工具中找到,當鼠標移動到窗口上時,它會動態地突出顯示匹配修訂的行。