Here I have created sample that will help you out.
HTML
<div>
<asp:DataList ID="dlQuestion" runat="server">
<ItemTemplate>
<p>
<%#Container.ItemIndex+1 %>
)
<%# Eval("QuestionDescription")%>
</p>
<table>
<tr>
<td>
<asp:RadioButton ID="rblOptionOne" GroupName="Questions" Text='<%# Eval("OptionOne") %>'
runat="server" />
</td>
</tr>
<tr>
<td>
<asp:RadioButton ID="rblOptionTwo" GroupName="Questions" Text='<%# Eval("OptionTwo") %>'
runat="server" />
</td>
</tr>
<tr>
<td>
<asp:RadioButton ID="rblOptionThree" GroupName="Questions" Text='<%# Eval("OptionThree") %>'
runat="server" />
</td>
</tr>
<tr>
<td>
<asp:RadioButton ID="rblOptionFour" GroupName="Questions" Text='<%# Eval("OptionFour") %>'
runat="server" />
</td>
</tr>
<tr>
<td>
<asp:RadioButton ID="rblOptionFive" GroupName="Questions" Text='<%# Eval("OptionFive") %>'
runat="server" />
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
<br />
<br />
<asp:Button Text="Refresh" runat="server" />
</div>
Code
protected void Page_Load(object sender, EventArgs e)
{
dlQuestion.DataSource = GetQuestions();
dlQuestion.DataBind();
}
private DataTable GetQuestions()
{
DataTable dt = new DataTable();
dt.Columns.Add("QuestionDescription");
dt.Columns.Add("OptionOne");
dt.Columns.Add("OptionTwo");
dt.Columns.Add("OptionThree");
dt.Columns.Add("OptionFour");
dt.Columns.Add("OptionFive");
dt.Rows.Add("The capital of India.", "LK Advani", "Moscow", "Delhi", "Kabul", "Tokyo");
dt.Rows.Add("Maximum run in ODI by a batsman.", "Ricky Pointing", "Sachin Tendulker", "Azharuddin", "Don Bradman", "OptionTwo");
return GetRandomoptions(dt);
}
private DataTable GetRandomoptions(DataTable dt)
{
DataTable result = dt.Clone();
List<string> options = new List<string>();
List<string> randomOptions = new List<string>();
foreach (DataRow dr in dt.Rows)
{
string question = string.Empty;
int i = 0;
foreach (string option in dr.ItemArray)
{
if (i != 0)
{
options.Add(option);
}
else
{
question = option;
}
i++;
}
randomOptions = RandomizeList(options);
DataRow tempRow = result.NewRow();
tempRow[0] = question;
int j = 1;
foreach (string changedOption in randomOptions)
{
tempRow[j] = changedOption;
j++;
}
result.Rows.Add(tempRow);
}
return result;
}
public List<string> RandomizeList(List<string> originalList)
{
List<string> randomList = new List<string>();
Random random = new Random();
string value = default(string);
while (originalList.Count() > 0)
{
var nextIndex = random.Next(0, originalList.Count());
value = originalList[nextIndex];
randomList.Add(value);
originalList.RemoveAt(nextIndex);
}
return randomList;
}
Screenshot

If you have two different tables for question and answers with foreign key relationship then you can refer below article using SQL
http://stackoverflow.com/questions/848872/select-n-random-rows-from-sql-server-table