2008-11-20 143 views
2

在代數中,如果我使用x + y = 3語句,我使用的變量將保存值爲2和1或1和2.我知道編程中的賦值不是同一件事,但我想知道。如果我想表示一個量子怪異粒子的價值,我希望我的變量同時具有兩個值,並在稍後將其解析爲一個或另一個值。或者,也許我只是在做夢?變量可以有多個值

是否可以說類似i = 3 or 2;

+0

實際上,在這個聲明中,x和y幾乎可以成爲任何東西!例如,x = -3,y = 6; x = 0,y = 3; x = 4,y = -1等... – 2008-11-20 07:50:21

+0

哈哦是啊!那麼,我幾乎不知道你看到的那些數學內容都不是......所以有時候我會把我的真相與我的謊言混淆!雖然謝謝! – Ziggy 2008-11-20 08:12:04

回答

7

你不能用原生類型做到這一點,但沒有什麼能阻止你創建一個變量對象(假設你使用的是OO語言),它有一系列的值,甚至是一個概率密度函數而不是實際的值。

您還需要定義變量和變量以及原生標量之間的所有數學運算符。平等和分配運營商也是如此。

numpy數組對矢量和矩陣做類似的操作。

+0

我不知道你爲什麼提出有關使用面嚮對象語言的評論。可以用幾乎任何語言來創建一個庫來處理不確定的變量類型。 – Trent 2009-03-03 22:56:26

0

您可以使用一個結構體並處理manualy操作。否則,一次變量只有一個值。

0

變量只不過是一個地址到內存中。這意味着一個變量恰好描述了內存中的一個位置(長度取決於類型)。所以只要我們沒有「量子記憶」(我們沒有它,而且它看起來不像我們將在不久的將來),答案是NO。 如果你想編程和建模這種行爲,你的方式是使用一個數組(長度等於最大多個值的數量)。由此增加運行時間,因此必須對每個值進行計算(例如,x + y,必須用2個不同值x1 + y1,x2 + y2,x1 + y2和x2 + y1來計算)。

0

在Perl中,你可以。 如果您使用Scalar::Util,則可以使var取2個值。一個用在字符串上下文中,另一個用在數字上下文中。

+0

男人,這很酷!我想我想看看Perl! – Ziggy 2008-11-20 08:02:25

1

你在問什麼似乎是如何實現一個Fuzzy Logic系統。這些已經有一段時間了,你可以毫無疑問地很容易地爲普通編程語言選擇一個庫。

9

這是爲Perl 6(路口)計劃的功能之一,語法應該看起來像my $a = 1|2|3;

如果實施,它會直觀地工作,如$a==1$a==2同時成立。另外,例如,$a+1會爲您提供值2|3|4

此功能,以及通過Perl6::JunctionQuantum::Superpositions模塊Perl5的實際可用的,但沒有語法糖(通過「功能」 allany)。它是在微軟的實驗性語言,但它沒有記錄任何地方(我剛剛嘗試過,當我在看Cω,它只是工作),但也可用於比較(b < any(1,2,3))。

2

這也是你可以在Prolog中做的事情。你定義你的約束變量,然後讓Prolog的解決這些規則...

這需要一些時間來適應它,但它是美好的某些問題,一旦你知道如何使用它...

相關問題